服務端模版注入漏洞產生的根源是將用戶輸入的數據被模版引擎解析渲染可能導致代碼執行漏洞
下表涵蓋了java,php,python,javascript語言中可能使用到的模版引擎,如果網站存在服務端模版注入在能回顯的情況下會將驗證欄的數據當模版執行,利用引擎提供的功能進行了計算大部分執行結果都會變成1522756
。
模版引擎
|
語言
|
驗證
|
代碼執行
|
盲檢測
|
---|---|---|---|---|
Smarty(secured) | php | {1234*1234} | x | x |
Smarty(unsecured) | php | {1234*1234} | {php}echo md5(0xaa);{/php} | |
twig | php | {{“abcdefg”|upper}} | x | x |
Nunjucks | javascript | {{1234*1234}} | {{range.constructor(“return+’abcdefghi’.toUpperCase()”)()}} | |
doT | javascript | {{=1234*1234}} | ||
Jade | javascript | %0a=1234*1234%0a | ||
Marko | javascript | ${1234*1234} | ||
Mako | python | ${1234*1234} | ||
Jinja2 | python | {{1234*1234}} | ||
Tornado | python | {{1234*1234}} | ||
Slim | ruby | =”#{1234*1234}” | ||
ERB | ruby | <%=”#{1234*1234}”%> | ||
Freemarker | java | ${(1234*1234)?c} | ||
Velocity | java |
#set(
|
附錄一
升級ruby 查看ruby版本 ruby —version
利用rvm Ruby版本管理器升級 查看支持升級的版本 rvm list known
升級指定版本 rvm install 2.3
rockup命令安裝 gem install rock
附錄二
安裝gradle
# mkdir /opt/gradle
# cd /opt/gradle
# wget https://services.gradle.org/distributions/gradle-3.5-bin.zip
# unzip gradle-3.5-bin.zip
# export PATH=$PATH:/opt/gradle/gradle-3.5/bin
# gradle -v
附錄三
安裝java1.8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下載 jdk-8u131-linux-x64.tar.gz
export PATH=$PATH:/opt/java8/jdk1.8.0_131/bin
其他環境搭建
Tplmap 測試環境搭建
php環境
yum install wget php unzip
php -S 0.0.0.0:15002 -t env_php_tests/
nodejs環境
yum install epel-release
yum install nodejs
cd /root/tplmap-master/tests/env_node_tests/lib; node connect-app.js;
java環境
下載相應的rpm包
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
rpm -ivh jdk-8u131-linux-x64.rpm
mkdir /opt/gradle
cd /opt/gradle
wget https://services.gradle.org/distributions/gradle-3.5-bin.zip
export PATH=$PATH:/opt/gradle/gradle-3.5/bin
ruby環境
利用yum 安裝的ruby為2.0.0,不符號要求
安裝rvm
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm reload
rvm requirements run #檢測並安裝依賴
rvm install 2.3.4
gem install cuba
gem install tilt
gem install slim
cd env_ruby_tests/
rackup -o 0.0.0.0 -p 15005
python環境
yum install epel-release
yum install python-pip
pip install mako jinja2 flask tornado
python webserver.py