What is SSI?
It is a feature that allows developers to dynamically generate web content by using “#” directives without having to do it manually. The server searches for the SSI directives in the HTML code and executes them sequentially
SSI (Server Side Includes) are directives that are placed in HTML pages, and evaluated on the server while the pages are being served. They let you add dynamically generated content to an existing HTML page, without having to serve the entire page via a CGI program, or other dynamic technology.
For example, you might place a directive into an existing HTML page, such as:
syntax:: <!--#directive/command <parameter> -->
<!--#echo var="DATE_LOCAL" -->
And, when the page is served, this fragment will be evaluated and replaced with its value:
Tuesday, 15-Jan-2013 19:28:54 EST
Configuring your server to permit SSI
To permit SSI on your server, you must have the following directive either in your httpd.conf
file, or in a .htaccess
file:
Options +Includes
This tells Apache that you want to permit files to be parsed for SSI directives.
Not just any file is parsed for SSI directives. You have to tell Apache which files should be parsed. There are two ways to do this. You can tell Apache to parse any file with a particular file extension, such as .shtml
, with the following directives:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
SSI (Server Side Include) Injection
Server-Side Includes attack allows the exploitation of a web application by injecting scripts in HTML pages or executing arbitrary codes remotely
It is possible to check if the application is properly validating input fields data by inserting characters that are used in SSI directives, like:
< ! # = / . " - > and [a-zA-Z0-9]
Another way to discover if the application is vulnerable is to verify the presence of pages with extensions .stm, .shtm and .shtml.
However, the lack of these types of pages does not mean that the application is protected against SSI attacks.
HTML Comment Tag: <!--
This is a comment -->
The commands used to inject SSI vary according to the server operational system in use. The following commands represent the syntax that should be used to execute OS commands.
Linux:
List files of directory:
<!--#exec cmd="ls" -->
Access directories:
<!--#exec cmd="cd /root/dir/">
printenv
This prints out a listing of all existing variables and their values.
<! — #printenv →>
The printenv element is available only in Apache 1.2 and above.
set
This sets the value of a variable.
varThe name of the variable to set.valueThe value to give a variable.
For example:
<! — #set var=”category” value=”help” →
refer: https://www.cheat-sheets.org/sites/ssi.su/

refer: https://owasp.org/www-community/attacks/Server-Side_Includes_(SSI)_Injection

refer: https://medium.com/@shatabda/security-ssi-injection-what-how-fbce1dc232b9
Comments
Post a Comment