十念 发表于 2024-6-4 13:24:30

记一次“有手就行”的从SQL注入到文件上传Getshell的简朴过程

0x01 前台SQL注入

漏洞原理
SQL 注入漏洞的原理是应用步伐没有对用户输入进行充分的验证和过滤,导致攻击者可以在输入框中插入恶意的 SQL 代码。当应用步伐将用户输入的数据拼接到 SQL 查询语句中时,攻击者插入的恶意代码也会被执行,从而绕过身份验证和访问控制,直接访问或修改数据库中的数据。
1、查找注入点。

如果要对一个网站进行SQL注入攻击,首先就需要找到存在SQL注入漏洞的地方,也就是寻找所谓的注入点。可能的SQL注入点一样平常存在于登录页面、查找页面或添加页面等用户可以查找或修改数据的地方。
交互点一样平常是搜索栏、留言版、登入/注册页面、以及最利于观察的搜索栏的地点如果类似于http//xxxxxx/index.phpid=1这种很大程度存在注入当然有些注入点不会这么一眼看出会有些比较复杂例如http://xxxxxx/index.phpx=home&c=View&a=index&aid=9 这样的地点其实也可能存在注入。
如果应用步伐未对用户输入进行充分的验证和过滤,就容易受到 SQL [注入攻击]
根据如上所述先去查看和数据库有交互点的地方,一样平常先去找搜索框,特别是这种可以查询年份和编号的地方,和用户数据交互的可能性最大。
利用Wappalyzer简朴看一下网站的框架和利用的语言
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510520.png
颠末查看找到一处与数据库有数据交互的搜索编号的搜索框
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510521.png
可以直接输入一个单引号看看有没有报错,sql注入加单引号的缘故起因是为了让sql语句发生错误,从而得知其有没有过滤措施
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510522.png
芜湖,直接爆SQL语句错误。。。
返回前面的搜索框输入' and sleep(10)#
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510523.png
照旧直接报错,没什么waf防护拦截。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510524.png
既然你这么脆弱,我就不客气了,直接丢sqlmap一把梭。。。。。
【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习发展路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权势巨子CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
2、测试

在搜索框随便输入一个简朴的数据,利用yakit工具拦截等一下点击搜索发送的数据包。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510525.png
拦截的数据包:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510526.png
注入点在mz17Condition.searchCaseId=这个参数,在这个参数后面加上*号,让等一下利用sqlmap工具测试的时候直接测试这个测试,要否则会重新开始每一个参数都会测试,浪费时间,把数据包复制到txt文件里面。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510527.png
利用sqlmap工具测试txt文件里面的数据sqlmap命令:
--random-agent 随机使用HTTP用户代理头。
--level 分为1-5,默认为1,检查cookie至少为2,检查User-Agent等级至少为3,5级包含的payload最多,会自动破解出Cookie、XFF等头部注入,对应的速度也会比较慢。
--risk 等级为0-3,默认为1,会检测大部分的测试语句,等级为2时会增加基于事件的测试语句,等级为3会增加or语句的SQL注入测试sqlmap.py -r .\9.txt --random-agent --level 5 --risk 3
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510528.png
果然直接跑出来了,注入范例有布尔和报错,后端照旧IBM DB2数据库,第一次遇见。。。。
话不多说直接跑库,看看可以获取到后台的暗码sqlmap.py -r .\9.txt --random-agent --level 5 --risk 3 --dbs
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510529.png
只跑出了一个库,看提示,感觉是当前注入的用户权限不够大sqlmap.py -r .\9.txt --random-agent --level 5 --risk 3 --is-dba
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510530.png
后面跑了一下爆出来的数据库,里面没啥有用的信息。。。。拿不了shell继续测试别的地方
0x02 万能暗码后台登录

前面的前台SQL注入没什么大用拿不了shell以后,继续测试别的漏洞,前台基本没什么东西,看向后台。
1、测试

利用dirsearch工具扫描网站目录,扫描出网站后台。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510531.pnghttps://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510532.png
访问后台url
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510533.png
按照惯例后台登录必试弱口令admin/123456、admin/12345、admin/admin、admin/admin888、system/123456。。。。都试了一遍没成功,看见没验证码又不限制登录错误次数,直接去跑字典,效果。。。。没爆出来。。。。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510534.png
看向用户注册,鼓捣了一阵子发现根本就是摆设,填写信息点击注册没反应,抓包查看发现根本没有数据包发送出去,鸡肋。。。。
在束手无策的时候,突然想到前台有SQL注入漏洞,后台会不会也有呢。。。。
原理

万能暗码利用的原理就是在后台登陆页面没有对用户输入的内容进行验证,此时步伐所用用户输入的数据都合法的,以是这个时候无论是合法的管理员照旧非法的入侵者所输入的数据都是被信任的,非法入侵者正是利用这一特点来进行非法登录的。
当我们在这些语句中添加一些参数时,就可以去数据库中查询账号和暗码。
添加参数后,语句差不多是这样:
select * from user where username='a' or true #' and password='pass'
此中,#在SQL中是注释符,注释符后面的内容不起作用。
以是,实际上后台得到的有用代码是这样的:
select * from user where username='a' or true
此中or true 会使SQL语句恒成立,从而查询出数据库中的所有账号和暗码,从而使我们成功登录。
除了 # 以外, -- 也是SQL中的注释符,但SQL的语法格式规定--和后面的注释内容必须间隔一个空格。
以是拼接到语句中大概是这样的:
select * from user where username='a' or true -- a' and password='pass'
也就是说:a' or true -- a颠末SQL的转化后,效果等价于 a’ or true #。
SQL中规定,非布尔范例的数据参与比较运算时,会转化为布尔范例再参与运算。好比 or 1 大概 or 1=1 ,会转化为布尔范例的 true 再参与 or 的比较运算,也就是变成 or true ,同样能使条件恒成立,从而登录成功
简朴来讲就是:a' or 1 # 大概 a' or 1=1 # 等价于 a' or true #。
当我们在登录界面输入 【万能暗码】 好比 admin’ # 以后,后端会将我们输入的参数拼接到SQL中,大概是下面这样
select * from user where username='admin' #' and password='pass'
由于 # 在SQL中是注释符,注释符后面的内容不起作用,以是真正执行的SQL大概是下面这样
select * from user where username='admin'
SQL只会在数据库中查询用户名,而不是同时查询用户名和暗码,这就意味着,只要用户名正确,就可以登录成功。
继续测试

利用万能暗码继续测试admin' or 1=1--+
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510535.png
点击登录以后会跳转到这错误页面,似乎有戏!
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510536.png
更换一个万能暗码payload:admin' or 1=1#
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510537.png
芜湖报错!!!根据报错提示尝试闭合
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510538.png
尝试万能暗码闭合能不能直接进入后台,利用自己收藏的万能暗码txt去Fuzz用户名
抓取输入登录框用户名的数据包
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510539.png
这里利用burp suite工具继续爆破
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510540.png
加入自己收集的万能暗码payload,进行测试
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510541.png
芜湖302跳转了应该是成功了利用payload测试看看
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510542.png
终极构造万能暗码payload:admin' or '2'='2#
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510543.png
进入后台!!!,登录的用户为管理员用户!!!
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510544.png
0x03 后台getshell

1、测试

进了后台而且照旧管理员的账号,就好办了,查找上传点,效果一番点点点、看看看,在网站信息维护找到上传点。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510545.png
点击添加
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510546.png
填写好状态编号和数量
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510547.png
设置主页新闻图片的位置选择文件
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510549.png
设置一张图片码
利用Webshell_Generate生成哥斯拉jsp的webshell
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510550.png
生成名为ceshijsp.jpg的哥斯拉码
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510551.png
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510552.png
选择这个cheshijsp.jpg的图片
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510553.png
利用burp suite工具拦截点击确定时候发送的数据包,把后缀为jpg改为jsp
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510554.png
修改后缀为jpg以后,发送修改好的数据包,取消拦截。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510555.png
因为发送出去的数据包试没有回显回来上传webshell jsp码的地点,访问首页,新闻动态的第一张图片就是刚刚上传的jsp码,右键打开新的标签可以看到完整的图片地点。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510556.png
得到webshell地点
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510557.png
利用哥斯连接
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202405241510558.png
root最高权限!!!
https://shs3.b.qianxin.com/attack_forum/2024/04/attach-45fd7e52d6c9c39e24f2eb37523cb116a9b0a8aa.png
0x04 总结

要多做尝试不要气馁。。。。
更多网安技能的在线实操练习,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 记一次“有手就行”的从SQL注入到文件上传Getshell的简朴过程