目录
7.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
8.如何手工快速判断目标站是windows还是linux服务器?
13.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?
16.access 扫出后缀为asp的数据库文件,访问乱码,如何实现到本地利用?
18.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?
19.uid=1已结确认是注入点,注入时可以不使用and 或or 或xor,直接order by 开始注入吗?
21.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?
22.目标站发现某txt的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?
23.以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?
24.发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?
25.CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
44.mysql的网站注入,5.0以上和5.0以下有什么区别?
1.3389无法连接的几种情况
端口没有开放 端口被修改了 被拦截了 没出网(处于内网(需要进行端口转发))
2.二次注入
恶意数据经过一些转义函数(get_magic_quotes_gpc)的处理之后不会触发sql注入,然后插入到数据库中,再次调用的时候因为默认数据库里面的数据都是安全的,所以不会再进行检测,直接进行使用,导致二次注入
3.报错注入的函数
基于格式错误的报错(xpath语法错误)
函数:extractvalue(): 函数使用格式:extractvalue(xml_documentXpath_string) id='and(select extractvalue("anything",concat('~',(select语句)))) 原理: 因为~符号不符合xpath的语法规则所以导致报错返回select语句执行结果 paylaod: 查数据库名:id='and(select extractvalue(1,concat(0x7e,(select database())))) 爆表名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))) 函数:updatexml(): 函数使用格式:updatexml(xml_document,xpath_string,new_value) id='and(select updatexml("anything",concat('~',(select语句())),"anything")) 原理: 因为~符号不符合xpath的语法规则所以导致报错返回select语句执行结果 payload: 爆数据库名:'and(select updatexml(1,concat(0x7e,(select database())),0x7e)) 爆表名:'and(select updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),0x7e)) 注: 0x7e = ~ ~也可以换为#,$等只要不符合xpath的语法规范即可 两个函数只能查询32位如果过多就需要使用limit或substring
基于主键重复错误
函数:rand,floor,group by floor() 来返回小于等于该值的最大整数,因为rand是返回的0到1之间的1数,那通过floor(rand()*2)就可以实现只生成0和1.然后前面说到因为rand的种子定了的话他是伪随机数,所以导致0,1的顺序也是可控的。
4.堆叠注入
原理: 在SQL语句中,语句的结束都是以`;`结尾,但是如果我们在`;`后面再加上一条SQL语句,两条语句会一起执行吗?这也就是造成堆叠注入的原因了 payload: `select * from users;DELETE FROM test` 先查询user表,然后再从test数据库里删除user表。 `?id=-1'; insert into users(id,username,password) values(88,'aaa','bbb')%23`
5.判断出网站的CMS对渗透的意义
可以查找该CMS在网上曝出的漏洞进行利用 如果开源,还可以进行代码审计
6.一个成熟并且相对安全的CMS,渗透时扫目录的意义?
敏感文件、二级目录扫描 站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点
7.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
root权限以及网站的绝对路径。
8.如何手工快速判断目标站是windows还是linux服务器?
linux大小写敏感,windows大小写不敏感。
9.为何一个mysql数据库的站,只有一个80端口开放?
- 站库分离
- 更改了端口,没有扫出来
- 3306端口不对外开放
10.如何突破注入时字符被转义?
- 宽字节注入
- hex编码绕过
11.宽字节注入
数据库编码为非英文编码时,就可能会产生宽字节注入,宽字节注入需要为GBK编码
原因:
宽字节SQL注入就是PHP发送请求到MySql时使用了语句SET NAMES 'gbk' 或是SET character_set_client =gbk 进行了一次编码,但是又由于一些不经意的字符集转换导致了宽字节注入。
因为magic_quotes_gpc(魔术引号开关)导致了当PHP的传参中有特殊字符就会再前面加转义字符'\',来做一定的过滤,或者addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。所以这个时候就可以使用宽字节注入
我们发现\的编码是%5c,然后我们会想到传参一个字符想办法凑成一个gbk字符,例如:‘運’字是%df%5c
SELECT * FROM users WHERE id='1\'' LIMIT 0,1
这条语句因为\使我们无法去注入,那么我们是不是可以用%df吃到%5c,因为如果用GBK编码的话这个就是運,然后成功的让!
SELECT * FROM users WHERE id='1�\'#' LIMIT 0,1
�\ 实际上就是那个運字
12.在某后台新闻编辑界面看到编辑器,应该先做什么?
查看编辑器的名称版本,然后搜索公开的漏洞。
13.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?
能做的事情很多,用隐藏网马来举例子: 插入 <FilesMatch “xxx.jpg”> SetHandler application/x-httpd-php .jpg文件会被解析成.php文件。
14.注入漏洞只能查账号密码?
只要权限足够,啥都能干!!
16.access 扫出后缀为asp的数据库文件,访问乱码,如何实现到本地利用?
迅雷下载,直接改后缀为
.mdb
。
18.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?
使用的是一个数据库。
19.uid=1已结确认是注入点,注入时可以不使用and 或or 或xor,直接order by 开始注入吗?
and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。
20.某个防注入系统,在注入时会提示:
系统检测到你有非法注入的行为。已记录您的ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内容:and 1=2,该如何利用这个防注入系统拿shell?
在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。
21.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?
先对用户名进行枚举,然后利用枚举出来的用户名再爆破密码
22.目标站发现某txt的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt
,你有什么思路?
这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。
23.以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?
demo.do?DATA=AjAxNg== DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试
24.发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?
有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell 使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高 通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell
25.CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。
修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验RefererXXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
修复方式:XML解析库在调用时严格禁止对外部实体的解析。
26.CSRF、SSRF和重放攻击有什么区别?
CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的
27.说出至少三种业务逻辑漏洞,以及修复方式?
密码找回漏洞中存在
- 密码允许暴力破解、
- 存在通用型找回凭证、
- 可以跳过验证步骤、
- 找回凭证可以拦包获取
通过厂商提供的密码找回功能来得到密码。
身份认证漏洞中最常见的是
- 会话固定攻击
- Cookie 仿冒
- 只要得到 Session 或 Cookie 即可伪造用户身份。
验证码漏洞中存在
- 验证码允许暴力破解
- 验证码可以通过 Javascript 或者改包的方法来进行绕过
28.sql注入有几种类型?
按照注入点类型来分类
整形,字符型
按照数据提交方式来分类
- GET注入 提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。
- POST注入 使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。
- cookie注入 HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。
- http头部注入 注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。
按照执行效果来分类
- 基于布尔的盲注 即可以根据返回页面判断条件真假的注入。
- 基于时间的盲注 即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
- 联合查询注入 可以使用union的情况下的注入。
- 堆叠注入 可以同时执行多条语句的执行时的注入。
- 宽字节注入 数据库为GBK编码下,数据被函数转义后可以进行的注入
- 二次注入
- 报错注入 即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
29.SQL注入漏洞的关键条件
- 用户能控制输入的内容
- web应用把用户输入的内容带入到数据库中执行
30.SQL注入攻击流程
判断注入点
判断注入点类型
判断数据库类型
获取数据库数据库,提权
31.延时注入如何来判断?
if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)
32.盲注和延时注入的共同点?
都是一个字符一个字符的判断
33.如何拿一个网站的webshell?
上传,后台编辑模板,sql注入写文件,命令执行,代码执行, 一些已经爆出的cms漏洞,比如dedecms后台可以直接建立脚本文件,wordpress上传插件包含脚本文件zip压缩包等
34.sql注入写文件都有哪些函数?
select ‘一句话’ into outfile ‘路径’
select ‘一句话’ into dumpfile ‘路径’
例:select ‘’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;
35.如何防止CSRF?
- 验证referer
- 验证token
36.SQL注入防护方法?
- 使用安全的API
- 对输入的特殊字符进行Escape转义处理
- 使用白名单来规范化输入验证方法
- 对客户端输入进行控制,不允许输入SQL注入相关的特殊字符
- 服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。
37.TOP10
2021版OWASP Top 10
Top1 失效的访问控制
失效的访问控制,也叫越权,指的是在未对通过身份验证的用户,实施恰当的访问控制。攻击者可以利用这一漏洞,访问未经授权的功能或数据。
Top2 加密失败
在之前的Top10中,“加密失败”以前叫做“敏感数据泄露”,敏感数据泄露的根本原因是对数据加密存在有机可乘的漏洞,因此2021版改称为“加密失败”更贴切一些。
Top3 注入
SQL注入是典型的注入攻击,攻击者可以在web应用程序中事先定义好的查询语句的结尾,添加额外的SQL语句,从而实现非法操作。
Top4 不安全的设计
“不安全设计”是2021年新增的一个类型,它重点关注的是设计缺陷的风险,“不安全设计”代表的是一类漏洞。
Top5 安全配置错误
90%的web应用程序都经历过错误配置测试,这些将导致安全风险。
Top6 易受攻击和过时的组件
如果客户端和服务器使用了易受攻击的组件版本,就可能成为被攻击者攻击的目标。
Top7 认证和授权失败
通俗地说,该漏洞会导致攻击者使用用户的用户名和密码进行填充,从而入侵系统。
Top8 软件和数据完整性故障
同样,这也是一个新增的类型,指的是在不验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。
Top9 安全日志记录和监控失败
2017年以前,“安全日志记录和监控失败”叫做“日志记录和监控不足”,此类型已经扩展包括很多类型的漏洞。它指的是在没有日志记录和监控,将无法检测到漏洞,此类故障会直接影响可见性、事件报警和取证。
Top10 服务器端请求伪造
SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击者构造一定的利用代码导致服务端发起漏洞利用请求的安全漏洞。一般情况下,SSRF攻击的应用是无法通过外网访问的,所以需要借助目标服务端进行发起,目标服务器可以链接内网和外网,攻击者便可以通过目标主机攻击内网应用。
38.代码执行,文件读取,命令执行的函数都有哪些?
代码执行:
eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function
文件读取:
file_get_contents(),highlight_file(),fopen(),read
file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等命令执行:
system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
39.如何绕过waf?
- 大小写转换法
- 干扰字符
/*!*/
- 编码
base64 unicode hex url ascll
- 复参数
40.如何向服务器写入webshell?
- 各种上传漏洞
- mysql具有写入权限,用sql语句写入shell
- http put方法
41.渗透测试中常见的端口
1,web类(web漏洞/敏感目录) 第三方通用组件漏洞struts thinkphp jboss ganglia zabbix
80 web
80-89 web
8000-9090 web
2,数据库类(扫描弱口令)
1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL
3,特殊服务类(未授权/命令执行类/漏洞)
443 SSL心脏滴血
873 Rsync未授权
5984 CouchDB http://xxx:5984/_utils/
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问
4,常用端口类(扫描弱口令/端口爆破)
21 ftp
22 SSH
23 Telnet
2601,2604 zebra路由,默认密码zebra
3389 远程桌面
42.端口合计详情
21 ftp
22 SSH
23 Telnet
80 web
80-89 web
161 SNMP
389 LDAP
443 SSL心脏滴血以及一些web漏洞测试
445 SMB
512,513,514 Rexec
873 Rsync未授权
1025,111 NFS
1433 MSSQL
1521 Oracle:(iSqlPlus Port:5560,7778)
2082/2083 cpanel主机管理系统登陆 (国外用较多)
2222 DA虚拟主机管理系统登陆 (国外用较多)
2601,2604 zebra路由,默认密码zebra
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3306 MySQL
3312/3311 kangle主机管理系统登陆
3389 远程桌面
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网
5432 PostgreSQL
5900 vnc
5984 CouchDB http://xxx:5984/_utils/
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
7778 Kloxo主机控制面板登录
8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
8083 Vestacp主机管理系统 (国外用较多)
8649 ganglia
8888 amh/LuManager 主机管理系统默认端口
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问
43.代替空格的方法
%0a、%0b、%a0 等 /**/ 等注释符 <>
44.mysql的网站注入,5.0以上和5.0以下有什么区别?
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。
45.xss几种类型
1.反射型
用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。需要诱使用户“点击”一个恶意链接,才能攻击成功
2.存储型
存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。
3.DOM型
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
46.DOM型和反射型的区别
反射型XSS:
通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。
DOM型:
通过修改页面的DOM节点形成的XSS。DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。根本区别在我看来是输出点的不同。
47.文件上传漏洞
原因:
一些web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,再通过 url 去 访问以执行代码.
绕过:
1.前端限制
通过浏览器F12很简单的修改文件后缀名就可以完成绕过检查,或者是讲木马修改后缀名后上传,通过改包工具修改上传。如果是JS脚本检测,在本地浏览器客户端禁用JS即可。可使用火狐浏览器的NoScript插件、IE中禁用掉JS等方式实现绕过。
2.服务端MIME类型验证
利用Burp抓包,将报文中的Content-Type改成允许的类型
Content-Type: image/gif
Content-Type: image/jpg
Content-Type: image/png
3.服务器文件扩展名验证-黑名单
1.后缀名大小写绕过
2.修改后缀名绕过
3.重写绕过
务端将
黑名单的后缀名替换为空,但仅进行一次
。上传.phphpp后缀.4.特殊可解析后缀绕过
5..htaccess绕过
6.%00截断
%00是chr(O),
它不是空格,是NULL,空字符
。4.服务器文件扩展名验证-白名单
5.服务器解析漏洞
1.Apache 解析漏洞
2.IIS6.0 漏洞
1.目录解析 :
目录名为.asp、.asa、.cer,则目录下的所有文件都会被作为ASP
url/test.asp/shell.jpg会被当作asp脚本运行。
2.文件解析 :
文件名中分号后不被解析,例如.asp;、.asa;、.cer;。
url/test.asp;shell.jpg会被当作asp脚本运行。
3.文件类型解析 :
.asa,.cer,.cdx都会被作为asp文件执行。
url/shell.asa会被作为asp文件执行。3.Nginx 漏洞
4.Nginx 文件名逻辑漏洞(CVE-2013-4547)
48.CSRF
原理:
CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认
防御:
验证referer
添加token
49.SSRF
原理:
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
成因:
模拟服务器对其他服务器资源进行请求,没有做合法性验证。利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。
防御:
禁止跳转,限制协议,内外网限制,URL限制。绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dns rebindding。
50.php的%00截断的原理是什么?
因为在C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
条件:PHP<5.3.29,且GPC关闭
51.说说常见的中间件解析漏洞利用方式
IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
IIS 7.0/7.5默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
Nginx版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
空字节代码 xxx.jpg%00.php
Apache上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
52.反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?
nc -lvvp 7777 -e /bin/bash
bash是交互式,否则像useradd无法执行交互
53.CMD命令行如何查询远程终端开放端口
tasklist /svc
netstat -ano
54.udf提权
MySQL可以自定义函数,通过自定义函数做到类似xp_cmdshell效果
55.php中命令执行涉及到的函数
eval()
assert()
system()
exec()
shell_exec()
56.Metasploit 打开反向监听的命令
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
57.怎么查找域控
1.通过DNS查询
dig -t SRV _gc._tcp.lab.ropnop.com
dig -t SRV _ldap._tcp.lab.ropnop.com
dig -t SRV _kerberos._tcp.lab.ropnop.com
dig -t SRV _kpasswd._tcp.lab.ropnop.com
2.端口扫描
域服务器都会开启389端口,所以可以通过扫描端口进行识别。
3.其实很多域环境里,DNS服务器就是域控制根本不需要怎么找。
4.各种命令
dsquery
net group "Domain controllers"
nltest /DCLIST:pentest.com
未完待续...
更多推荐