-->
当前位置:首页 > DayDayUp > 正文内容

[转] 安全面经个人复盘(一)

Luz4年前 (2021-04-19)DayDayUp4221

转载自:CCALT,本文转载已获得作者授权

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png


原文格式与超链接请查看原文


1、渗透测试的流程  

 1、信息收集:whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息 

 2、漏洞扫描:Nessus, AWVS 

 3、手动挖掘:Webshell,SSRF,XSS,逻辑漏洞,SQL注入,弱口令等等 

 4、验证漏洞 

2、XSS获取平台

各有各的,这里不说自己的平台了 

3、XSS漏洞修补方式 

 1、输入编码转义 

 2、白名单过滤 

 3、添加Http-only尽量降低XSS的危害 

4、XSS的绕过方法 

 1、双写绕过,例如在过滤domain为空时,可以通过domdomainaim进行绕过测试。

 2、编码绕过,例如Payload: "> 

 3、空格绕过,例如:">XSS还有注释干扰,伪协议、空格Tab回车,css等绕过方法  

5、Mysql注入写入一句话条件 

 1、获取网站可写目录的绝对路径OUTFILE 

 2、root权限 3、没有配置–secure-file-priv 

6、Mysql注入写入一句话的函数 

 OUTFILE 

7、Sql注入的修复方式 

1、所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 

2、对进入数据库的特殊字符(’”\尖括号&*;等)进行转义处理,或编码转换。  

3、严格限制变量类型,比如整型变量就采用intval()函数过滤,数据库中的存储字段必须对应为int型。 

4、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。  

5、网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。  

6、严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。  

7、避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

8、Sql参数化查询 

参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有指令,也不会被数据库运行。Access、SQL Server、MySQL、SQLite等常用数据库都支持参数化查询。  

9、Mysql的报错注入的函数

floor(),extractvalue(),updatexml(),exp() 

10、Mysql的时间注入的函数

sleep(),benchmark(),笛卡尔积,GET_LOCK()加锁,RLIKE REGEXP正则匹配 

11、SQLMAP常用命令

GET方式sqlmap -u "url" //这个URL必须含 POST方式sqlmap -u http://testasp.vulnweb.com/Login.asp --data "tfUName=1&tfUPass=1" cookie注入sqlmap -u "url" --cookie "chsadj" --level 2 等等 

12、SQLMAP -R参数的使用

-r 1.txt 对于用post方法提交的,参数不在URL里面的网页,可以先截获数据,保存成文件再用这个参数执行 

13、SQLMAP 

GET型注入中许多参数只取其中一种 --param-del 

14、SQLMAP其他参数的使用

--random-agent 使用随机的user-agent --header="\n" 指定头信息,如User-Agent:dsacs,大小写敏感,多个用\n分隔 --delay 请求延迟间隔,单位秒,默认无延迟 --level 设置检查的等级等 

15、Sql注入宽字节注入原理

首先说下概念,GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象,即将两个ascii字符误认为是一个宽字节字符。 GBK 占用两字节,ASCII占用一字节,PHP中编码为GBK,函数执行添加的是ASCII编码(添加的符号为“\”),MYSQL默认字符集是GBK等宽字节字符集。 %df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。 

16、常见的逻辑漏洞 

订单金额任意修改,验证码回传,未进行登陆凭证验证,接口无限制枚举,平行越权,垂直越权和交叉越权等等

17、Nmap使用

nmap -T4 -A -v ip nmap最好用命令 nmap ip/24 扫描目标所在网段 nmap -iL C:\targets.txt 扫描主机列表targets.txt中的所有目标地址 nmap ip/24 -exclude ip 扫描除某个地址以外的地址 nmap ip -p 21,22 扫描某一地址的端口21,22 

18、Burp抓取返回包3种方法

1、proxy模块抓取包右键Do intercept选取Response to this request  

2、proxy模块抓取包放入Repeater放行 

3、设置中勾选参数即可每个包都返回响应包 

19、渗透过程中有趣的漏洞

 各有各的

20、XSS获取他人Cookie运用进行下一步渗透 

 如果获取的是普通用户Cookie则可以提交SRC,意义不大,若是获取管理员Cookie则可以进去后台进行下一步的渗透例如上传Webshell等等

21、半年之内常见的组件和中间件漏洞 

 IIS 

1、PUT漏洞 

2、短文件名猜解 

3、远程代码执行 

4、解析漏洞 

 Apache 

1、解析漏洞 

2、目录遍历 

 Nginx 

1、文件解析

 2、目录遍历

 3、CRLF注入

 4、目录穿越 

 Tomcat

1、远程代码执行

 2、war后门文件部署

jBoss 

1、反序列化漏洞 

2、war后门文件部署 

 WebLogic

1、反序列化漏洞

 2、SSRF

 3、任意文件上传

 4、war后门文件部署 

 其它中间件相关漏洞

1、FastCGI未授权访问、任意命令执行

 2、PHPCGI远程代码执行

22、struts2/fuckjson/weblogic/websphere等漏洞

struts2漏洞传送门(一)、struts2漏洞传送门(二) fastjson漏洞 websphere漏洞

23、应急响应 

 参考文章https://github.com/Bypass007/Emergency-Response-Notes

24、 windows和Linux日志溯源

windows:win+R运行eventvwr进入事件查看器 Linux:/var/log下的日志 Web:查看Apache、Nginx、Mysql日志

25、爬虫脚本常用到哪些库

requests、json、lxml、BeautifulSoup、pyquery等

26、解析服务器H5语言提取关键信息

BeautifulSoup

27、常见的爬虫框架

pyspider、scrapy、Crawley、Portia、selenium等

28、Linux命令创建用户

useradd和adduser,建议使用adduser会自动进入创建密码、目录等

29、Linux命令删除用户

userdel和deluser,建议使用deluser会自动删除用户目录等相关文件

30、Linux命令切换用户

su username 切换用户

31、Linux命令显示用户组

首先cat /etc/passwd|grep username查找用户所在组ID cat /etc/group查看所有组信息找到组ID对应名 PS:groups查看当前登录用户组内成员

32、Linux命令whereis Linux whereis命令用于查找文件

 -b  只查找二进制文件。 -B<目录>  只在设置的目录下查找二进制文件。 -f  不显示文件名前的路径名称。 -m  只查找说明文件。 -M<目录>  只在设置的目录下查找说明文件。 -s  只查找原始代码文件。 -S<目录>  只在设置的目录下查找原始代码文件。 -u  查找不包含指定类型的文件。

33、Linux命令awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号 awk -F #-F相当于内置变量FS, 指定分割字符 awk -v # 设置变量 awk -f {awk脚本} {文件名} 

34、Linux命令创建目录

mkdir dirname PS:mkdir -p确保目录名称存在,不存在的就建一个。

35、Linux命令删除目录和文件

rm -r dirname删除目录 rm filename 删除文件 PS:-i 删除前逐一询问确认,-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之文件删除。 谨慎使用rm -rf /* 

36、Linux命令杀死进程

首先top或者ps,建议使用ps,因为top是实时信息并不是找到进程号的最快手段 使用ps aux | grep XXXX,例如ps aux | grep chrome可以快速找到与chrome相关的进程 然后kill -9 PID PS:ps命令参数a =为所有用户显示进程,u =显示进程的用户/所有者,x =还显示未附加到终端的进程 kill 1=挂断,2=从键盘终端,9=杀死信号,15=中断信号,17、19、23=停止进程

37、Linux命令查看定时命令

crontab -l 列出目前的定时任务 PS:crontab -e 写入新的定时任务 crontab -r 删除当前的定时任务(谨慎使用) 

38、Linux命令改变目录权限

chmod 4+2+1 filename PS:chown username filename 修改文件所有人 chgrp groupname filename 修改文件所在组

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。